【问题标题】:Submitting multiple objects of one class on one form in Rails在Rails中的一个表单上提交一个类的多个对象
【发布时间】:2014-03-03 00:49:45
【问题描述】:

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

我已阅读此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 %>

【问题讨论】:

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


    【解决方案1】:

    使用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])
    

    【讨论】:

    • 此代码生成以下内容(每个事件的 id 相同):
    • 可以手动设置id。但是名称对参数很重要
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    相关资源
    最近更新 更多