web-dev-qa-db-ja.com

form_tagはSimple_formと連携しますか?

form_tagを使用しているフォームがあり、 simple_form gem でそれを使用する方法がわかりません。これは私のフォームがどのように見えるかです:

<%= 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 %>

できますか? simple_formを正しく使用するためにform_tagをどのように変更しますか? fields_forで使用する場合はどうですか?初心者はいくつかの助けを使うことができます。

ありがとうございました。

40
LearningRoR

simple_formはform_forではなくform_tagのラッパーです。 simple_form_forの代わりにform_forを使用できますが、form_tagは指定されたコンテンツで<form>タグを作成するだけで、単純なフォームには関係ありません。

17
Ineu

モデルに関連付けられたフォームを作成していない場合でも、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] ...
136
barelyknown

あなたはの使用を避けることができます

params[:signin][:email]

を使用して

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

そう

params[:email]
7
Mauro

@barelyknownのように、モデルがなくても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 %>
1
qoyyim