微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我一直在为 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 暂时解决了这个问题,这确实有效,但感觉这里缺少自动功能

解决方法

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

= simple_form_for [@distributor,@user_distributor]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。