2011-01-07 8 views
2

我々はすべて知っているように、簡単なRailsのリクエストメソッドに応じて、別のアクションにルーティングする方法は?

resources :meetings 

が私のために7つのアクションを生成します。これらのうちの2つはindexcreateです。この2つのURLは両方とも/meetingsですが、/meetingsに行くとdef indexアクションにルーティングされ、POSTするときに/meetingsと表示され、def createアクションにルーティングされます。ニース。私はMeetingsControllerに異なるアクションへのルートにそれらをしたい、あなたはそれを推測!

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

をそして:

は今、私はこれをしたいdef create_scoresmeetings/1/scores意志ルートにdef scoresポスティングに/meetings/1/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

うん、やっぱりすごい!私はグスタ。 – chadoh

+0

これは2.3では機能しません。 Rails 2.3.5では何をすべきですか? – Rocky

+0

Rails 2.xルートで ':conditions => {:method =>:post}'を利用します。 [経路の条件](http://apidock.com/rails/ActionController/Routing)を参照してください。 – gertas

1

は、このようなルートを定義します。

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

しかし、これを処理するために別のコントローラを作成するためにはるかに容易になるように私は完全に別のリソースのような感じにそれはあっても、スコアとして、私に聞こえる彼ら独自のモデル関連がない

+0

私はすべてのリソースを設定していますが、これも必要です。ミーティング全体のスコアを一括入力することができる1人のユーザーがおり、これがこれらのルートです。 – chadoh

1

ハ:

は、上記でよりDRYedすることができます!質問をうまく尋ねて答えに導く能力を過小評価してはいけません。

resources :meetings do 
    member do 
    get 'scores', :to => "meetings#scores" 
    post 'scores', :to => "meetings#create_scores" 
    end 
end 
関連する問題