Как маршрутизировать различные действия в зависимости от метода запроса в Rails? - PullRequest
3 голосов
/ 07 января 2011

Как мы все знаем, простой

resources :meetings

сгенерирует для меня 7 действий.Два из них index и create.Очень крутая вещь об этих двух !: URL для обоих: /meetings, но когда я ПОЛУЧУ /meetings, я направляюсь к действию def index, а когда я ПОСТУПАЮ /meetings, я перенаправляюсь на def createдействие.Хорошо.

Теперь я хочу сделать это:

resources :meetings do
  member do
    get  'scores'
    post 'scores'
  end
end

И, как вы уже догадались, я хочу, чтобы они перенаправляли на различные действия в MeetingsController: GETting /meetings/1/scores будет маршрутизироватьна def scores и POSTing на meetings/1/scores будет направлено на def create_scores.

Ответы [ 3 ]

5 голосов
/ 07 января 2011

Попробуйте:

resources :meetings do
  member do
    get  'scores' => :scores
    post 'scores' => :create_scores
  end
end

Полагаю, вам также будет интересно иметь названные маршруты:

resources :meetings do
  member do
    get  'scores' => :scores, :as => 'scores_of'
    post 'scores' => :create_scores, :as => 'create_scores_of'
  end
end

Тогда вы получите scores_of_meeting_path и create_scores_of_meeting_path помощников.

Выше может быть СУШЕН больше с:

get :scores, :as => 'scores_of'
1 голос
/ 07 января 2011

Ха!Никогда не стоит недооценивать способность хорошо задавать вопрос, чтобы привести его к ответу.

resources :meetings do
  member do
    get  'scores', :to => "meetings#scores"
    post 'scores', :to => "meetings#create_scores"
  end
end
1 голос
/ 07 января 2011

Определите маршруты, такие как это:

resources :meetings do
  member do
    get 'scores', :action => "scores"
    post 'scores', :action => "post_scores"
  end
end

Но мне кажется, что было бы намного проще создать другой контроллер для этого, так как результаты для меня кажутся совершенно другим ресурсом, даже еслиу них нет собственной модельной ассоциации.

...