Rails 4,check_box_tag在ajax渲染后没有将id传递给params哈希

时间:2016-08-02 22:44:54

标签: ruby-on-rails ajax forms

在我在表格中过滤结果之前,我的表单按照我的预期方式工作。

预期的功能是,允许用户选择多个对象,选择的对象id在params散列中提交,并且可以通过params [:event_ids]访问,当用户单击“Submit”按钮时(我已经将“提交”按钮标记为“交换”以阐明用户的功能“)

当我通过ajax过滤结果时,复选框和提交按钮仍然在视图中可见,但是当我单击“交换”时,所选对象不会与表单一起提交。参数哈希中不存在I.E参数[:event_ids]。我很难过。

以下是代码:

show.html.erb

<div class="jumbotron">
  <div class="container">
        <h1><%=@carpool.name%> Carpool!</h1>
        <p>View carpool specific events; Send Invites and Add Events if you are the carpool manager; View a list of all members in the carpool</p>
        <% if current_user == @carpool.manager %>
            <p>
                <a class="btn btn-primary btn-lg" href="<%=@carpool.id%>/events/new" role="button">Add Events</a>
                <a class="btn btn-primary btn-lg" href="<%=@carpool.id%>/invites/new" role="button">Send Invites</a>
            </p>
        <% end %>
  </div>
</div>

<div class="container">
    <div class="row">
        <div class="col-md-3">
            <%= render 'show_members_list' %>
        </div>
        <div class="col-md-9">
            <%= render 'show_events_list' %>
        </div>
    </div>
</div>

_show_events_list.html.erb

<div class="panel panel-default">
  <!-- Default panel contents -->
  <div class="panel-heading">Drive Events</div>
    <div class="panel-body">
        <div class="btn-group right" role="group" aria-label="...">
            <%= button_to "All Drive Events",
                        carpool_path(@carpool) + '?search=all',
                        type: "button",
                        remote: true,
                        method: :get,
                        class: "btn btn-default" %>

            <%= button_to "I'm Driving",
                        carpool_path(@carpool) + '?search=my_events',
                        type: "button",
                        remote: true,
                        method: :get,
                        class: "btn btn-default"
                        %>

            <%= button_to "I'm being Picked Up",
                        carpool_path(@carpool) + '?search=not_driving',
                        type: "button",
                        remote: true,
                        method: :get,
                        class: "btn btn-default"
                        %>

        </div>
        <div class="swap_button"><%= submit_tag 'Swap!', data: {confirm: "Are you sure?"}, class: "btn btn-primary btn-lg swap", id: "swap_submit" %></div>
    </div>


  <!-- Table -->
  <table class="table">
        <thead>
            <tr>
                <th>Who's Driving?</th>
                <th>Event Name</th>
                <th>Drive Event Type</th>
                <th>Place</th>
                <th>Game/Not Game</th>
                <th>Address</th>
                <th>Date</th>
                <th>Swap</th>
            </tr>
        </thead>
        <%= form_tag carpool_path(@carpool), method: :get, id: "swap_form" do %>
            <tbody id="carpool_events">
                <%= render 'events_list.html.erb', locals: {events: @events} %>
          </tbody>
        <% end %>
    </table>
</div>

_events_list.html.erb

<% if @events != nil %>
    <% @events.each do |event| %>
            <% if event.driver_id != nil %>
                <tr>
                    <td><%= event.driver ? event.driver.name : "swapped"%></td>
                    <td><%= event.name%></td>
                    <td><%= event.drop_off? ? "Drop Off At" : "Pick Up From" %></td>
                    <td><%= event.location_name%></td>
                    <td><%= event.is_game ? "Game" : "Not Game(event, practice)" %></td>
                    <td><%= event.location_address %></td>
                    <td><%= event.date ? event.date.strftime("%A, %d %b %Y %l:%M %p") : "Please Enter Details on TeamSnap!"%></td>
                    <td>
                            <% if current_user == event.driver %>
                                <%= check_box_tag "event_ids[]", event.id %>
                            <% end %>
                    </td>
                </tr>
            <% end %>
    <% end %>
<% end %>

show.js.erb

$("#carpool_events").html("<%= escape_javascript(render partial: 'events_list', locals: { events: @events } ) %>");

1 个答案:

答案 0 :(得分:0)

尝试这样的事情

<%= check_box_tag "carpool[event_ids][]", event.id %>

并且您的控制台日志记录验证将出现的参数