【问题标题】:Change parameter name FORM_WITH VS FORM_FOR更改参数名称 FORM_WITH VS FORM_FOR
【发布时间】:2019-07-02 03:55:27
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    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

    【讨论】:

    • 他们为什么要去掉“as”?好像很有用? Form_for 会折旧吗?
    猜你喜欢
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多