在Rails中的一个表单上提交一个类的多个对象

时间:2014-03-03 00:49:45

标签: ruby-on-rails forms fields-for

我仍然对form_forform_tag的第一个参数以及使用时的哪个参数感到朦胧。但基本上我正在建立一个网站,访问者可以在网站上发布音乐会活动。 活动是一个模型。管理员可以看到提交的事件列表,我希望每个人都有一个复选框,然后管理员可以检查他要批准的事件,并在表单上点击提交,他们都会得到更新。 :approved事件模型中的布尔字段。

我已经阅读了这个post,但我不确定他们在下一个答案的最后一个答案中获得form_tag的第一个参数。

我想我需要一个名为EventsUpdateController的新控制器。到目前为止,我有类似的东西,但它不太正确:

<%= form_tag events_update_path do  %>
  <% @unapproved_events.each do |event| %>
    <%= fields_for "events[]", event do |e| %>
      <tr>
        <td><%= e.check_box :approved %></td>
        <td><%= event.date.strftime('%A %B %-d') %></td>
        <td><%= event.time.strftime('%l:%M %P') %></td>
        <td><%= event.title %></td>
      </tr>
    <% end %>
  <% end %>
<% end %>

1 个答案:

答案 0 :(得分:0)

使用check_box_tag

<%= form_tag events_update_path do  %>
  <% @unapproved_events.each do |event| %>
    <tr>
      <td><%= check_box_tag "event_ids[]", event.id, :id => "event-#{event.id}" %></td>
      <td><%= event.date.strftime('%A %B %-d') %></td>
      <td><%= event.time.strftime('%l:%M %P') %></td>
      <td><%= event.title %></td>
    </tr>
  <% end %>
  <%= submit_tag "Approve" %>
<% end %>

在您的控制器操作中,

events_to_approve = Event.find(params[:event_ids])