众所周知,一个简单的
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
,POST到meetings/1/scores
将路由到def create_scores
。
答案 0 :(得分:4)
尝试:
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 :(得分:1)
定义如下的路线:
resources :meetings do
member do
get 'scores', :action => "scores"
post 'scores', :action => "post_scores"
end
end
但是听起来我觉得创建另一个控制器来处理这个更容易,因为对我而言,得分完全是另一种资源,即使他们没有自己的模型关联。
答案 2 :(得分:1)
哈!永远不要低估提出问题以引导您回答的能力。
resources :meetings do
member do
get 'scores', :to => "meetings#scores"
post 'scores', :to => "meetings#create_scores"
end
end