Rails从复数到单一资源的路由

时间:2015-11-19 14:34:51

标签: ruby-on-rails ruby

我在我的应用中构建了一个功能,我在其中创建了一些可以在我的数据库中更改的内容设置。但是我遇到了一个需要我使用多态路由的问题。这最终导致了很多问题,因为我的路线有两个与之关联的ID。我意识到这就是我的路径文件中的资源是复数的原因。所以我把它变成了单数,现在我遇到了解决这些简单路线的问题。

我的路线文件是这样的

concern :content_settings do
  resources :content_setting, only: [:index, :edit, :delete, :update]
end

当我运行rake路线时,我正在这样做

admin_customer_content_setting_index GET     /admin/customers/:customer_id/content_setting(.:format)              admin/content_setting#index
edit_admin_customer_content_setting  GET     /admin/customers/:customer_id/content_setting/:id/edit(.:format)     admin/content_setting#edit
admin_customer_content_setting       PATCH   /admin/customers/:customer_id/content_setting/:id(.:format)          admin/content_setting#update   
                                     PUT     /admin/customers/:customer_id/content_setting/:id(.:format)          admin/content_setting#update

现在我基本上处于需要实现一条路径到我的新功能的编辑选项的位置。我一直在努力尝试......

=link_to edit_admin_customer_content_setting_path(@owner)

我继续收到“无路由选项”错误。有人知道我有什么遗失的吗?如果需要,我很乐意展示更多我的代码。

非常感谢!

1 个答案:

答案 0 :(得分:2)

请试试这个

= link_to edit_admin_customer_content_setting_path(customer_id: @owner.id, id: @content.id)

当您查看rake routes的输出时,您会看到在第三列中您被告知它所期望的参数:

edit_admin_customer_content_setting  GET     /admin/customers/:customer_id/content_setting/:id/edit(.:format)     admin/content_setting#edit

在您的情况下:customer_idid

更新

如果您想避免将两个ID传递给助手,可以使用浅路线。请查看documentation here(向下滚动浅嵌套