保存ActiveRecord对象的数组?

时间:2012-10-31 22:05:46

标签: ruby ruby-on-rails-3 ruby-on-rails-3.1

在我看来,我这样做:

<table border="1">
 <tr>
    <th>Question</th>
    <th>Counter</th>
    <th>Lastsent</th>
    <th>Email</th>
  </tr>
<% @email_stats.each do |email_stat| %>
<% post = Post.find(email_stat.postId) %>
  <% if post.posttype == 'Question' %>
  <tr>
    <td><%= post.question %></td>
    <td><%=  email_stat.counter%></td>
    <td><%= email_stat.lastsent %></t>
    <td><%=  text_field_tag 'email', email_stat.email%></td>
  </tr>
  <%  end %>
 </table>

这就是我所拥有的:对于某些对象,电子邮件将为“空白”,因此我想显示表格中的所有记录,并允许主持人输入电子邮件,然后单击“保存存储”。

我使用form_for,但它只用于保存单个对象。

将阵列发送回服务器进行保存的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

我认为您可以使用ajax,以便使用jquery序列化表中的数据并将数据发布回服务器端。所以你可以保存数组。

答案 1 :(得分:0)

使用form_tag而不是form_for可以实现预期的行为。实施例

<%= form_tag :url => , :html => {:id=> , :method => , :class => ""} do %>
  <% text_field_tag <id>, <default_value>, :name=>"post[question]" %>
  <% text_field_tag <id>, <default_value>, :name=>"email_stat[counter]" %>
  <% text_field_tag <id>, <default_value>, :name=>"email_stat[last_sent]" %>
  <% text_field_tag <id>, <default_value>, :name=>"email_stat[email]" %>
  <%= submit_tag 'save' %>
<% end %>

然后将params很好地分组为像

这样的哈希
{'post' => {'question' => 'xxx' }, 'email_stat' => {'counter' => 'xxx' , 'last_sent' =>  'xxx', 'email' => 'xxx'}} 

您可以解析以更新两个模型。您需要做的就是正确命名text_field。