form_tag是否适用于Simple_form?

时间:2012-02-18 15:00:24

标签: ruby-on-rails ruby-on-rails-3.1 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 %>

可以吗? form_tag如何更改才能正确使用simple_form?与fields_for一起使用时怎么办?新手可以使用一些帮助。

谢谢。

4 个答案:

答案 0 :(得分:136)

即使您没有创建与模型相关联的表单,也可以使用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"=>"test@test.com",
    "password"=>"[FILTERED]"},
    "commit"=>"Sign In"
   }
 }

在您的控制器中,您可以使用以下方式引用表单字段:

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

答案 1 :(得分:16)

simple_form是form_for的包装,而不是form_tag。您可以使用simple_form_for代替form_for,但form_tag只创建包含指定内容的<form>代码,与简单形式无关。

答案 2 :(得分:6)

您可以避免使用

params[:signin][:email]

使用

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

所以

params[:email]

答案 3 :(得分:1)

像@barelyknown一样说即使没有模特也可以使用simple_form 您还可以使用field_forsimple_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 %>