ドキュメントを読みましたが、すべてを理解しているかどうかはまだわかりません。
:new
特にパラメータがある理由。私が理解している限り、それは:collection
パラメーターに置き換えることができます。
では、これら 3 種類のルートの違いは何でしょう?
ドキュメントを読みましたが、すべてを理解しているかどうかはまだわかりません。
:new
特にパラメータがある理由。私が理解している限り、それは:collection
パラメーターに置き換えることができます。
では、これら 3 種類のルートの違いは何でしょう?
違いは、生成される URL です。
3 つのリソースを推測してみましょう:
map.resources :users, :collection => { :rss => :get }
map.resources :users, :member => { :profile => :get }
map.resources :users, :new => { :draft => :get }
最初のルートは以下を作成します:
/users/rss
コントローラー名とアクション名の間には何もありません。ユーザーのリストの RSS フィードを取得するために、他のパラメーターは必要ありません。
2 つ目は、アクション「プロファイル」をオブジェクトのメンバーとして作成します。したがって、次のようになります。
/users/1/profile
「1」はユーザーのto_param
. プロフィールを表示するには、ユーザーの ID が必要です。
3 つ目は、アクション「ドラフト」を新しいアクションのメンバーとして作成します。したがって、次のようになります。
/users/new/draft
「ドラフト」アクションは、ユーザーの作成を受け入れる前にユーザーのドラフトを表示します。
これが、:collection、:member、:new の違いです。それぞれが異なるルートを作成し、それぞれに独自の目的があります。
:member
パターンでパスを作成します/:controller/:id/:your_method
:collection
パターンでパスを作成します/:controller/:your_method
:new
パターンでパスを作成します/:controller/:your_method/new
(パスの最後の要素、つまりnew
定数であることに注意してください)
New
Collection
主にイデオロギー層で異なります。これが、REST の専門家がより大きなリソース内に REST の「サブリソース」を作成することを理解する方法です。
ダミアンの説明は、:new に関するセクションを除いて、ほとんど正しいです。
http://guides.rubyonrails.org/routing.htmlにある ruby on rails のルーティング ガイドをよく読んでください。ルーティングについては、裏返しに説明されています。セクション 3.11.3 (新しいルートの追加) で :new の機能について説明していますが、:member や :collection とは大きく異なります。
基本的に map.resources :photos, :new => { :upload => :post } は POST HTTP 動詞を使用して /photos/upload を作成します。