使用simple_form和浅嵌套资源的Rails 4动作路由

时间:2014-05-30 01:19:03

标签: ruby-on-rails simple-form

resources :users, shallow: true do
    resources :shoes
end

这为我提供了两种不同的创建和编辑路径

user_shoes_path
shoes_path

在我的鞋_form.html.erb中,如果我离开表格标签:url作为默认值,当我提交新的或更新的鞋子时,我会收到丢失的路线错误。

如果我提供表格中的网址,我可以将其用于新版本或编辑更新,但我无法让它同时适用于这两种情况。

这适用于新的:

<%= simple_form_for :shoe, url: user_shoes_path do |f| %>

这适用于编辑,但在尝试实际更新后会失败,因为它会重定向到/:param_id

<%= simple_form_for :shoe, url: shoes_path(@shoe) do |f| %>

我怎样才能让它兼顾?感谢。

1 个答案:

答案 0 :(得分:24)

你应该使用

<% = simple_form_for [@user, @shoe] do |f| %>

让let_form做这项工作......

这种情况,如果有@user,简单表单将使用它(对于new),如果没有(比如编辑),简单表单将不会使用它...