-改訂された回答- コメントに基づいて、連絡先モデルを関連付けようとしているのではなく、単なるビューであることがわかります。その場合でもルート ファイルを変更する必要がありますが、すべてのプロジェクトに対して 1 つの連絡先ページを取得するか、プロジェクトごとに 1 つの連絡先ビューを取得するかを決定する必要があります。いいえ:
# Collection Contact
example.com/projects/contact # IE One contact view for all projects
# Member Contact
example.com/projects/1/contact # IE One contact view per project
どちらの方法でも、ルート ファイルでプロジェクト リソースのブロックを使用する必要があります。したがって、コレクション (すべてのプロジェクト) に対して 1 つの連絡先ページが必要な場合は、次のようにします。
resources :projects do
collection do
get 'contact'
end
end
または、メンバーごとに 1 つの連絡先ビュー (プロジェクトごとに 1 つ) が必要な場合は、次のようにします。
resources :projects do
member do
get 'contact'
end
end
いずれにせよ、これはあなたが入れることができるヘルパーメソッドをあなたに与えるでしょうlink_to
コレクションの場合はcontact_projects_path
(引数なし)、メンバーの場合はcontact_project_path(@project)
(引数としてプロジェクトを渡します。
get
post
put
delete
orをコレクションまたはメンバー ブロックのパラメーターとして使用できますmatch
。これは、その URL で処理する要求の種類と生成するヘルパーを Rails に指示するだけです。通常のビューでは、GET リクエストが必要です。
これが最終的にあなたの質問に答えることを願っています:)
-元の答え-
これは、ビューだけでなく、モデルへのルーティング用です
routes.rb に以下を追加してください:
resources :projects do
resource :contact
end
あなたの質問を正しく理解できれば、project_contact_path() というヘルパーが作成されるはずです。
この記録はprojects/123/contact.
プロジェクトごとに複数の連絡先が必要な場合は、複数形にする必要があります (resource :contacts)。次に、レコードは次のようになりますprojects/123/contacts/123
。
http://guides.rubyonrails.org/routing.htmlを参照
link_to( project_contact_path(@project) )
プロジェクトごとに連絡先が 1 つしかないlink_to( project_contact_path(@project,@contact) )
場合、またはプロジェクトごとに複数の連絡先がある場合は、これを使用してリンクします。