Изменить имя параметра FORM_WITH VS FORM_FOR - PullRequest
0 голосов
/ 08 февраля 2019

Я использую рельсы 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.Я не знаю, в чем разница.

1 Ответ

0 голосов
/ 08 февраля 2019

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_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, вы можете проверить по этой ссылке более подробные параметры

...