如何在rails中创建多编辑表单

时间:2010-11-16 00:49:46

标签: ruby-on-rails forms webforms

我需要在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值。

1 个答案:

答案 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提供更全面的帮助形式指南。