Подтвердить что ты не робот

Работает ли form_tag с Simple_form?

У меня есть форма, использующая form_tag и не уверен, как ее использовать с символом simple_form. Вот как выглядит моя форма:

<%= form_tag create_multiple_prices_path, :method => :post do %>

  <% @prices.each_with_index do |price, index| %>
    <%= fields_for "prices[#{index}]", price do |up| %>
      <%= render "fields", :f => up %>
    <% end %>
  <% end %>

  <%= submit_tag "Done" %>
<% end %>

Можно ли это сделать? Как изменить form_tag, чтобы использовать simple_form правильно? Как насчет использования с помощью fields_for? Новичок может использовать некоторую помощь.

Спасибо.

4b9b3361

Ответ 1

simple_form - обертка вокруг form_for, а не form_tag. Вы можете использовать simple_form_for вместо form_for, но form_tag просто создает теги <form> с указанным контентом, это не относится к простой форме.

Ответ 2

Вы можете использовать simple_form, даже если вы не создаете форму, привязанную к модели.

Возьмите эту форму в качестве примера:

<%= simple_form_for :signin, { url: signin_path } do |f| %>
  <%= f.input :email %>
  <%= f.input :password %>
  <%= f.button :submit, "Sign In" %>
<% end %>

Это создаст параметры вроде следующего:

{
  ...
  "signin" => {
    "email"=>"[email protected]",
    "password"=>"[FILTERED]"},
    "commit"=>"Sign In"
   }
 }

В контроллере вы можете ссылаться на поля формы, используя:

params[:signin][:email] ...

Ответ 3

Вы можете избежать использования

params[:signin][:email]

используя

<%= f.input :email, input_html: { name: "email" } %>

так

params[:email]

Ответ 4

like @barelyknown said Вы можете использовать simple_form даже без модели Вы также можете использовать field_for или simple_field_for

<%= simple_form_for :transaction_limits, {url: create_multiple_prices_path, method: :post} do |f| %>
  <% @prices.each_with_index do |price, index| %>
    <%= f.fields_for "prices[#{index}]", price do |up| %>
      <%= render "fields", :f => up %>
    <% end %>
  <% end %>

  <%= f.submit "button" %>
<% end %>