form_tag和Simple_form一起工作吗?
我有一个使用form_tag
的表单,不知道如何使用它与simple_form gem 。 这是我的forms:
<%= 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
呢? 新手可以使用一些帮助。
谢谢。
simple_form是form_for
的封装,而不是form_tag
。 您可以使用simple_form_for
而不是form_for
,但form_tag
只是创build具有指定内容的<form>
标记,与简单forms无关。
即使您没有创build与模型绑定的表单,也可以使用simple_form。
以此login表单为例:
<%= simple_form_for :signin, { url: signin_path } do |f| %> <%= f.input :email %> <%= f.input :password %> <%= f.button :submit, "Sign In" %> <% end %>
这将产生如下的参数:
{ ... "signin" => { "email"=>"test@test.com", "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 %>