2011-01-07 25 views
2

大家都知道,一個簡單的如何根據Rails中的請求方法路由到不同的操作?

resources :meetings 

會爲我7分的動作。其中兩個是indexcreate。關於這兩個方面真的很酷!:兩者的URL都是/meetings,但是當我GET /meetings時,我被路由到def index操作,當我POST /meetings時,我被路由到def create操作。尼斯。

現在,我想這樣做:

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

而且,你猜對了!我希望他們路由到不同的行動MeetingsController:入門/meetings/1/scores意志路線def scores和張貼到meetings/1/scores意志路線def create_scores

回答

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_pathcreate_scores_of_meeting_path幫手。

get :scores, :as => 'scores_of' 
+0

Ooohh,多麼奇妙最小!我喜歡。 – chadoh 2011-01-07 13:32:35

1

定義路由像這樣:

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

但它的聲音,我喜歡它會更容易創建另一個控制器來處理這個問題,因爲成績對我來說感覺就像另一個資源完全,即使他們沒有自己的模特協會。

+0

我有所有設置的成績資源,但我也需要這個。有一個人可以批量輸入整個會議的分數,這就是這些路線的用途。 – chadoh 2011-01-07 13:28:14

1

哈:

以上可與DRYed更多!永遠不要低估提出問題的能力來引導你回答問題。

resources :meetings do 
    member do 
    get 'scores', :to => "meetings#scores" 
    post 'scores', :to => "meetings#create_scores" 
    end 
end 
相關問題