Ruby on Rails3: как включить нестандартные методы в маршруты? - PullRequest
0 голосов
/ 30 января 2011

Мой route.rb:

resources :board
root :to => 'application#index'
match ':controller(/:action(/:id(.:format)))'

в моем BoardController у меня есть метод с именем take_turn

, но когда я нажимаю на ссылку, указывающую на board # take_turn, я получаюошибка:

Unknown action

The action 'show' could not be found for BoardController

Ссылка выглядит так:

http://localhost:3000/board/take_turn?x=0&y=0

Ответы [ 3 ]

1 голос
/ 30 января 2011
resources :boards do
  match 'take_turn', :on => :collection
end

Путь по умолчанию: take_turn_boards_path

0 голосов
/ 30 января 2011

Я предполагаю, что take_turn в вашем случае является методом GET для коллекции.

resources :board do
  collection do
    get :take_turn
  end
  # OR
  get :take_turn, :on => :collection
end

ps: вне темы. Лучшая практика говорит, что лучше отключитькарты маршрутов для предотвращения непредвиденного поведения:

#match ':controller(/:action(/:id(.:format)))'
0 голосов
/ 30 января 2011
match 'board/take_turn/:x/:y' => "board#take_turn", :as => 'take_turn'

Который будет доступен как take_turn_path

http://guides.rubyonrails.org/routing.html#naming-routes

поставить, если раньше resources :board: вопрос о приоритете маршрута

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...