Ошибка соответствия маршрута - PullRequest
0 голосов
/ 27 февраля 2011

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

Это ссылка

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"}

Это мой маршрутный файл, они находятся в папке, называемой владельцем, отсюда и пространство имен

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

Можно ли вручную ввести путь?

Любые идеи

Ответы [ 2 ]

1 голос
/ 27 февраля 2011

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

Отличный трюк для проверки именованных маршрутов состоит в том, чтобы открыть консоль Rails (./script/console) и ссылку на ярлык "app", например, так:

$> ./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 и позволяет вам тестировать именованные маршруты и многие другие аспекты приложения.

0 голосов
/ 27 февраля 2011

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

new_owner_property_rate_path(@property)
...