我正在使用rails 5和form_with
助手。我的代码在使用Form_for
时有效,但在Form_with
上无效。 :as
参数对Form_with
无效吗?
<%= form_with(model: @user_wizard , :as => :user_wizard, url: validate_step_wizard_path, local: true, builder: BsFormBuilder) do |f| %>
def user_wizard_params
params.require(:user_wizard).permit( :name )
end
但是,每次我尝试提交表单时,参数都会提交:
{"utf8"=>"✓",
"authenticity_token"=>"LvRDsdfsdfsd3V0l4NLg14q2JWBdwkDPqUIu2l7SXDiioCtvMwW6Bv3ss/LPSS9+bdxiPIzjg==",
"current_step"=>"step1",
"wizard_user_step1"=>
{"name"=>"Name"}
}
我一直在关注。.https://medium.com/@nicolasblanco/developing-a-wizard-or-multi-steps-forms-in-rails-d2f3b7c692ce
但是,我的代码使用Form_with,而他们使用Form_for。我不知道有什么区别。
答案 0 :(得分:0)
form_for 使用基础模型实例,例如此处@post作为模型
<%= form_for @post do |form| %>
<%= form.text_field :author %>
<%= form.submit “Create” %>
<% end %>
form_tag 是表单帮助器,但是don't have
基础模型,您应该使用text_field_tag而不是text_field
<%= form_tag “/posts” do %>
<%= text_field_tag “post[author]” %>
<%= submit_tag “Create” %>
<% end %>
form_with 将结合form_for和form_tag,稍后这两个将与form_with结合
此处使用form_with实现form_for和form_tag,如下所示, 如果通过模型传递form_with,它将作为form_for使用,但是如果传递url,它将作为form_tag
<%= form_with model: @post do |form| %>
<%= form.text_field :author %>
<%= form.submit “Create” %>
<% end %>
<%= form_with url: “/posts” do |form| %>
<%= form.text_field :author %>
<%= form.submit “Create” %>
<% end %>
与此同时,您的问题没有选项as
,您可以从此链接检查more detail options