Пространства имен Rails, содержащие только числа

#ruby #ruby-on-rails-3 #api

#ruby #ruby-on-rails-3 #API

Вопрос:

Я создаю API на rails, и мне сказали, что мне нужно расширить область видимости сайта, чтобы у него были версии.

Что-то вроде /1.0/do_something .

Из того, что я прочитал, я делаю это, создавая routes.rb, который выглядит следующим образом:

 API::Application.routes.draw do
   scope :path => "1.0", :module => "1.0" do
      post "do_something" => "controller#method"

      # Everything else. Glob is saved in params[:r]
      match '*r', :to => 'errors#e404'
   end 
end
  

Но когда я rake routes , я получаю следующую ошибку:

 rake aborted!
missing :action
  

Что я делаю не так?

Комментарии:

1. Не то, что вы ищете, но grape может упростить задачу.

Ответ №1:

У вас не может быть модуля с именем «1.0» по очевидным причинам. Рассмотрите возможность вызова этого V1 вместо этого.

Комментарии:

1. Если бы вы могли, ссылаться на это было бы проблемой. 1.0.do_method на самом деле вызывало бы Float#do_method

2. Что, если бы мне нужно было сопоставить этот URL с модулем? Я относительно новичок в rails.

3. @icco: Тогда вы бы сделали scope :path => "1.0", :module => "V1" do . Просто.