如何使用嵌套资源编写 simple_form_for 块?

时间:2021-06-01 19:11:57

标签: ruby-on-rails ruby-on-rails-5 simple-form

我一直在为 Rails 道路苦苦挣扎,所以这就是我现在所拥有的。出于某种原因,它适用于编辑操作,但不适用于新操作。

路线

  resources :distributors do
    resources :user_distributors, as: :users
    resources :distributor_brands, as: :brands
  end

表单声明:

= simple_form_for @user_distributor, url: distributor_user_path(@distributor, @user_distributor), wrapper: :vertical_input_group do |f|

此链接会显示编辑操作的表单:

edit_distributor_user_path(@distributor, user_distributor))

但是,此链接不会为新操作显示正确的路线:

 new_distributor_user_path(@distributor)

相反,表单声明失败并出现以下错误:

No route matches {:action=>"show", :controller=>"user_distributors",

这是因为 @user_distributor 变量没有 id 值,这就是它尝试路由到 show 操作的原因。

如何对该声明进行编码,以便该表单同时适用于 newedit 操作?

我通过在操作中设置 url 暂时解决了这个问题,这确实有效,但感觉这里缺少自动功能。

1 个答案:

答案 0 :(得分:0)

当您像我上面那样尝试重命名路由时会出现此问题。当我回到丑陋的路线名称时,一切都按照默认格式进行:

= simple_form_for [@distributor, @user_distributor]
相关问题