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