2017-03-03 7 views
0

という名前のカスタムアクションを持つコントローラTeamは、追加のID、:exercise_idを受け取る必要があります。ここで私はこれを行うにしようとしています方法です:余分なIDを持つカスタムルートを定義する

resources :teams do 
    member do 
    post :enroll 
    post :unenroll 
    get 'exercises/:exercise_id/list_questions' 
    end 
end 

しかし、私は次のエラーが表示されますArgumentError: Missing :action key on routes definition, please check your routes.

それを達成するためのより良い方法は何ですか?

+0

「メンバー」と「コレクション」の違いを理解しておく必要があります。 'メンバー 'ルートは、メンバー上で動作するため、' ID'を必要とします。 'コレクション'ルートは、オブジェクトのコレクションに作用するので、 –

+0

リガンスには作用しません。私の解釈は:私はまだ 'team_id'が必要なので、' team'リソースから 'member'ブロックの中に私の望むルートを入れました。 – rwehresmann

答えて

1

そのルートのアクションが定義されていないため、エラーが発生しています。

この

resources :teams do 
    member do 
    post :enroll 
    post :unenroll 

    get 'list_questions(/exercises/:exercise_id)', 
     to: "teams#list_questions", 
     as: :list_questions 
    end 
end 

のようなものを試してみて、あなたはURLをこのように構築することができます:

list_questions_teams_path(@team, @exercise) 
0

ちょうどあなたressourcefulルートのようなアプローチたどる:

resources :teams do 
    member do 
    post :enroll 
    post :unenroll 
    resources :exercises do 
     member do 
     resources :list_questions 
     end 
    end 
    end 
end 

が生成されます。

 enroll_team POST  /teams/:id/enroll(.:format)             teams#enroll 
     unenroll_team POST  /teams/:id/unenroll(.:format)             teams#unenroll 
    list_questions GET  /teams/:id/exercises/:id/list_questions(.:format)        list_questions#index 
        POST  /teams/:id/exercises/:id/list_questions(.:format)        list_questions#create 
    new_list_question GET  /teams/:id/exercises/:id/list_questions/new(.:format)       list_questions#new 
edit_list_question GET  /teams/:id/exercises/:id/list_questions/:id/edit(.:format)      list_questions#edit 
     list_question GET  /teams/:id/exercises/:id/list_questions/:id(.:format)       list_questions#show 
        PATCH /teams/:id/exercises/:id/list_questions/:id(.:format)       list_questions#update 
        PUT  /teams/:id/exercises/:id/list_questions/:id(.:format)       list_questions#update 
        DELETE /teams/:id/exercises/:id/list_questions/:id(.:format)       list_questions#destroy 
      exercises GET  /teams/:id/exercises(.:format)             exercises#index 
        POST  /teams/:id/exercises(.:format)             exercises#create 
     new_exercise GET  /teams/:id/exercises/new(.:format)            exercises#new 
     edit_exercise GET  /teams/:id/exercises/:id/edit(.:format)          exercises#edit 
      exercise GET  /teams/:id/exercises/:id(.:format)            exercises#show 
        PATCH /teams/:id/exercises/:id(.:format)            exercises#update 
        PUT  /teams/:id/exercises/:id(.:format)            exercises#update 
        DELETE /teams/:id/exercises/:id(.:format)            exercises#destroy 
       teams GET  /teams(.:format)                teams#index 
        POST  /teams(.:format)                teams#create 
      new_team GET  /teams/new(.:format)               teams#new 
      edit_team GET  /teams/:id/edit(.:format)              teams#edit 
       team GET  /teams/:id(.:format)               teams#show 
        PATCH /teams/:id(.:format)               teams#update 
        PUT  /teams/:id(.:format)               teams#update 
        DELETE /teams/:id(.:format)               teams#destroy 

http://guides.rubyonrails.org/routing.html#resource-routing-the-rails-default

関連する問題