Почему Rails дискриминирует мой маршрут? - PullRequest
0 голосов
/ 12 марта 2012

в моем файле rout.rb есть только две строки:

match 'movies/orderby/:field' => 'movies#orderby'

и

resources :movies

Однако, когда я запускаю rake routes в моем проекте, я получаю забавный выводпосмотрите:

              /movies/orderby/:field(.:format) {:controller=>"movies", :action=>"orderby"}
movies     GET    /movies(.:format)                {:action=>"index", :controller=>"movies"}
           POST   /movies(.:format)                {:action=>"create",:controller=>"movies"}
new_movie  GET    /movies/new(.:format)            {:action=>"new", :controller=>"movies"}
edit_movie GET    /movies/:id/edit(.:format)       {:action=>"edit", :controller=>"movies"}
 movie     GET    /movies/:id(.:format)            {:action=>"show", :controller=>"movies"}
           PUT    /movies/:id(.:format)            {:action=>"update",:controller=>"movies"}
           DELETE /movies/:id(.:format)            {:action=>"destroy", :controller=>"movies"}

Видите, чем маршрут, который я кодировал вручную, отличается от других?(это вверху) Кроме того, Rails не создал для меня помощника URL ....

Я все время получаю следующее сообщение об ошибке:

неопределенный метод `movies_orderby 'для

... Любые идеи ????

РЕДАКТИРОВАТЬ: маршрут работает (т. е. если я наберу соответствующий URL, он будет правильно перенаправлен), но у меня есть нет вспомогательный метод url, чтобы добавить в мои представления !!

1 Ответ

2 голосов
/ 12 марта 2012

Когда вы определяете маршруты, метод match не будет генерировать URL-помощники, если вы не укажете, какими должны быть имена помощников. Поэтому я бы порекомендовал вам определить его следующим образом:

match 'movies/orderby/:field' => 'movies#orderby', :as => :movies_orderby
resources :movies

Когда вы определите название маршрута с помощью :as, вы сможете использовать его в своих представлениях, например, если вы, например, хотите заказать по title

<%= movies_orderby_path("title") %>

И, как примечание, вы правильно определили маршрут сопоставления до маршрута ресурсов. Обратный путь мог вызвать проблемы.

...