我必须创建一个名为Copy:
的新控制器操作def Copy
old_record = @deal.contract.find(params[:id])
new_record = old_record.dup
new_record.save
end
我需要访问属于contract
的{{1}}。
如何在视图上创建deal
以重定向到类似link_to
的网址?
在这种情况下,我想访问属于 deal 1的合约号码。
如何配置我的路线文件?
答案 0 :(得分:3)
您可以使用resources
或其单数兄弟resource
设置嵌套路线。
resources :deals do
resources :contracts do
member do
post :copy
end
end
end
这会创建一个嵌套路径,例如/deals/:deal_id/contracts/:id/copy
。请注意,它被声明为POST,因为get请求不应该创建资源。
您可以为嵌套资源创建路径和网址,如下所示:
path_to([@deal, @contract])
link_to(@contract.name, [@deal, @contract])
form_for([@deal, @contract])
redirect_to([@deal, @contract])
但是,您可能希望从阅读何时以及如何使用嵌套开始: