2017-03-03 78 views
0

我的Team控制器需要自定义动作list_questions需要接收额外的编号:exercise_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

您必须了解'member'和'collection'之间的区别。 “成员”路线将需要一个“ID”,因为它会影响成员。一个“集合”路线并不是因为它作用于一个对象集合 –

+0

Rigth。我的解释是:我仍然需要我的'team_id',所以我把我想要的路线放在我的'团队'资源的'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 

,你可以建立的网址是这样的:

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