Ошибка сопоставления маршрута

Я получаю сообщение об ошибке от рельсов, жалующихся на маршрут.

это ссылка

link_to 'Add New Rate', new_owner_property_rate_path

Ошибка

No route matches {:action=>"new", :controller=>"owner/rates"}

Путь выглядит нормально, как будто я разгребаю маршруты, я получаю эту строку маршрута,

new_owner_property_rate GET    /owner/properties/:property_id/rates/new(.:format)      {:action=>"new", :controller=>"owner/rates"}

Это мой файл маршрута. Они находятся в папке с именем owner, отсюда и пространство имен.

namespace :owner do
  resources :properties do
    resources :rates
  end   
  root :to => "home#index"
end

Контролер ставок

class Owner::RatesController < Owner::BaseController

  def index
    @rates = Rate.all
  end

  def new
    @property = Property.find(params[:property_id])
    @rate = Rate.new
  end
end

Я могу ввести путь вручную нормально?

Есть идеи


person Lee    schedule 26.02.2011    source источник


Ответы (2)


Похоже, вы не правильно перезагрузили маршруты? Попробуйте перезапустить сервер приложений Rails. Я видел, как маршруты не распознаются, даже если именованный маршрут загружен правильно и маршрут определен.

Отличный трюк для тестирования именованных маршрутов — открыть консоль Rails (./script/console) и сослаться на ярлык «приложение» следующим образом:

$> ./script/console
Loading development environment (Rails 2.3.5)
>> app.new_owner_property_rate_path
NoMethodError: undefined method `new_owner_property_rate_path' for #<ActionController::Integration::Session:0x109bd1a78>
        from vendor/rails/actionpack/lib/action_controller/test_process.rb:511:in `method_missing'
        from (irb):1
>> 

Это самый простой известный мне способ проверки новых маршрутов и проверки примера выражения или именованного маршрута. Это особенно полезно для проверки параметризованных маршрутов со странными ошибками.

РЕДАКТИРОВАТЬ: обратите внимание, что в консоли Rails есть объект под названием «приложение», который является ссылкой на ваше приложение Rails и позволяет вам тестировать именованные маршруты и многие другие аспекты приложения.

person Winfield    schedule 26.02.2011
comment
Извините, но я перезагрузил файл маршрутов и перезапустил сервер. Я попробовал путь в консоли, и он не дал мне совпадения маршрутов. Я не могу понять, как все выглядит правильно для меня. - person Lee; 27.02.2011

Я нашел это. Мне пришлось добавить объект в путь, т.е.

new_owner_property_rate_path(@property)
person Lee    schedule 27.02.2011