我需要在rails中创建一个多编辑表单,如下所示:
<form>
<input type='text' name='input1'></input>
<input type='text' name='input2'></input>
<input type='text' name='input3'></input>
<input type='text' name='input4'></input>
<input type='text' name='input5'></input>
<br>
<input type='text' name='input1'></input>
<input type='text' name='input2'></input>
<input type='text' name='input3'></input>
<input type='text' name='input4'></input>
<input type='text' name='input5'></input>
<br>
<input type='text' name='input1'></input>
<input type='text' name='input2'></input>
<input type='text' name='input3'></input>
<input type='text' name='input4'></input>
<input type='text' name='input5'></input>
<br>
......等等,然后“<submit>
”按钮将在最后。单击末尾的提交按钮应收集所有值并在控制器中解析它们。
我只需要知道如何在视图中生成多编辑表单。而且,每一行都是独一无二的;我还需要知道如何为每个输入标签分配一个唯一的标识符;我确实有一个我可以使用的唯一ID值。
答案 0 :(得分:0)
这很容易实现,但我们需要更多信息。这些字段与您的模型有何关系?这个模型是否包含许多字段,模型的许多实例或其他内容?
在这种情况下,您要做的是使用表单构建器。它将根据命名约定生成输入字段,当它到达控制器时将被解析为更有用的格式。由于我没有关于您的模型的信息,我将使用一个假设的例子:
class Post < ActiveRecord::Base
attr_accessible :title, :body, :author, :published_at
end
使用form_for
帮助程序创建表单。它将为您提供一个formbuilder对象来创建输入字段。
<% form_for :post do |f| -%>
<p>
<%= f.label :title %>
<%= f.text_field :title %>
</p>
<p>
<%= f.label :body %>
<%= f.text_area :body %>
</p>
<p>
<%= f.label :author %>
<%= f.text_field :author %>
</p>
<p>
<%= f.label :published_at %>
<%= f.datetime_select :published_at %>
</p>
<% end -%>
使用帮助程序的主要好处是它生成的输入的name
属性。由于body
属于post
的表单,因此会为其指定名称属性post[body]
。这些属性将被解析为以下哈希:
:post => {
:title => "This is the title",
:body => "this is the body",
:author => "John Doe",
:published_at => "Mon Nov 15 2010 19:23:40 GMT-0600 (CST)"
}
这意味着您无需手动将字段复制到模型中。您可以直接将其传递给Model#new
方法:
@post = Post.new(params[:post])
然后进行验证检查。当您开始在彼此内部嵌套模型时,此约定变得不可或缺。
See here提供更全面的帮助形式指南。