我一直在为 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 操作的原因。
如何对该声明进行编码,以便该表单同时适用于 new
和 edit
操作?
我通过在操作中设置 url 暂时解决了这个问题,这确实有效,但感觉这里缺少自动功能。
答案 0 :(得分:0)
当您像我上面那样尝试重命名路由时会出现此问题。当我回到丑陋的路线名称时,一切都按照默认格式进行:
= simple_form_for [@distributor, @user_distributor]