更改参数名称FORM_WITH VS的form_for

问题描述 投票:0回答:1

我用的导轨5和form_with帮手。使用Form_for的时候,而不是Form_with我的代码工作。是:as参数不Form_with有效?

View

<%= form_with(model: @user_wizard , :as => :user_wizard, url: validate_step_wizard_path, local: true, builder: BsFormBuilder) do |f| %>

Model

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。我不知道有什么区别。

ruby-on-rails ruby-on-rails-5 form-for
1个回答
0
投票

这里的form_for使用@post底层模型的实例,例如作为模型

<%= form_for @post do |form| %>
 <%= form.text_field :author %>
 <%= form.submit “Create” %>
<% end %>

的form_tag是形式帮手但don't have底层模型,你应该使用text_field的text_field_tag

<%= form_tag “/posts” do %>
 <%= text_field_tag “post[author]” %>
 <%= submit_tag “Create” %>
<% end %>

form_with将结合的form_for和的form_tag,后来这两个将与form_with统一

这里实施的form_for和使用的form_tag form_with,因为你可以看到下面的区别,如果你路过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检查

© www.soinside.com 2019 - 2024. All rights reserved.