【发布时间】: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 动作的原因。
如何编写该声明以使该表单同时适用于 new 和 edit 操作?
我通过在操作中设置 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