2012-11-15 10 views
9

からあるルートをすくい、およびルートの束が出てきますが、どこに定義されています?レールはあなたが</p> <pre><code>rake routes </code></pre> <p>を入力したとき、彼らは

私はいくつかはデフォルトであることを知っていますが、他はどうですか?

たとえば、これはコントローラからのスクリプトですが、私はdo_somethingから 's'を離そうとしましたが、動作させることはできません....他の場所でも定義されていますか? また、いつパラメータを取るのですか、そうでない場合は、どのように知っていますか?ありがとう!

def hello 
    redirect_to do_things_shop_path(shop) 
end 

def do_things 
end 
+0

ルートは 'config/routes.rb'ファイルで定義されています。 – Brian

答えて

19

Railsルーティング設定はconfig/routes.rbファイルに保存されます。

パラメータを取ることは多くのことに依存します。 rake routesは経路がパラメータを取ると表示されます。メンバアクションはパラメータをとります。

posts GET  /posts(.:format)   posts#index 
     POST  /posts(.:format)   posts#create 
edit_post GET  /posts/:id/edit(.:format) posts#edit 

最後の行では、posts/:id/editと似ています。このパスには、:idパラメータが必要です。このルートをさまざまな方法で呼び出すことができます。

match `/posts/:id/things_with_id`, :to => 'posts#do_things_with_id', :as => 'do_things_with_id 
match `/posts/things_without_id`, :to => 'posts#do_things_without_id', :as => 'do_things_without_id 

は最初のものはしばらくIDが必要です:カスタムアクションを作成したい場合は、(ポストコントローラの下で言う)

edit_post_path(@post) 

、あなたは以下のようにそれを宣言することができますようにそれらの一つは、もう1つはありません。それに応じてそれらを呼び出す:リソースについては

do_things_with_id_path(@post) 

do_things_without_id() 

を、あなたはメンバー&コレクションアクションを使用して簡単にこれらを作成することができます。メンバーアクションにはIDが必要ですが、コレクションアクションでは必要ありません。

resources :posts do 
    member { get 'do_thing' } 
    collection { get do_things' } 
end 

ご希望の場合

ところで、これらを明確に理解したい場合は、次のガイドをお読みください。 http://guides.rubyonrails.org/routing.html

関連する問題