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
で使用する場合はどうですか?初心者はいくつかの助けを使うことができます。
ありがとうございました。
simple_formはform_for
ではなくform_tag
のラッパーです。 simple_form_for
の代わりにform_for
を使用できますが、form_tag
は指定されたコンテンツで<form>
タグを作成するだけで、単純なフォームには関係ありません。
モデルに関連付けられたフォームを作成していない場合でも、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] ...
あなたはの使用を避けることができます
params[:signin][:email]
を使用して
<%= f.input :email, input_html: { name: "email" } %>
そう
params[:email]
@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 %>