在Rails中创建嵌套资源的路径

时间:2016-08-17 19:23:40

标签: ruby-on-rails

我必须创建一个名为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的合约号码。

如何配置我的路线文件?

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])

但是,您可能希望从阅读何时以及如何使用嵌套开始: