-修订答案-根据评论,我看到您并没有尝试关联联系人模型,而只是一个视图。在这种情况下,您仍然需要更改路由文件,但您需要决定是要为所有项目获取单个联系人页面,还是每个项目获取一个联系人视图。IE:
# 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
无论哪种方式,您都需要在您的路线文件中为您的项目资源使用一个块。因此,如果您希望集合(所有项目)有一个联系页面,请执行以下操作:
resources :projects do
collection do
get 'contact'
end
end
或者,如果您希望每个成员有一个联系人视图(每个项目一个),请执行以下操作:
resources :projects do
member do
get 'contact'
end
end
无论哪种方式,这都会为您提供可以放入的辅助方法link_to
对于集合,它应该是contact_projects_path
(无参数),对于成员,它应该是contact_project_path(@project)
(作为参数传入项目。
您可以使用get
post
put
delete
ormatch
作为集合或成员块中的参数,它只是告诉 Rails 在该 URL 处要处理哪种请求,以及要生成哪些帮助程序。对于普通视图,您需要 GET 请求。
我希望这最终能回答你的问题:)
-原始答案-
这是用于路由到模型,而不仅仅是视图
添加到您的 routes.rb 中:
resources :projects do
resource :contact
end
如果我正确理解您的问题,那应该创建一个名为 project_contact_path() 的帮助程序。
该记录将projects/123/contact.
如果您希望每个项目有多个联系人,则需要将其设为复数(资源:联系人)。然后您的记录将如下所示projects/123/contacts/123
。
见http://guides.rubyonrails.org/routing.html
link_to( project_contact_path(@project) )
如果每个项目只有一个联系人,或者每个项目link_to( project_contact_path(@project,@contact) )
有多个联系人,您将使用此链接。