【问题标题】:How can I code a simple_form_for block with nested resources?如何使用嵌套资源编写 simple_form_for 块?
【发布时间】:2021-06-01 19:11:57
【问题描述】:

我在 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_distributorvariable 没有 id 值,所以这就是它试图路由到 show 动作的原因。

如何编写该声明以使该表单同时适用于 newedit 操作?

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

【问题讨论】:

  • = simple_form_for [@distributor, @user_distributor], wrapper: :vertical_input_group do |f| 应该能够推断出正确的路径而不需要通过url
  • 我就是这么开始的。但它给了我这个错误:未定义的方法`distributor_user_distributor_path'。可能是因为我试图美化路线名称。

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


【解决方案1】:

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

= simple_form_for [@distributor, @user_distributor]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    相关资源
    最近更新 更多