【问题标题】:Rails 4, check_box_tag not passing ids into params hash after ajax renderRails 4,check_box_tag 在ajax 渲染后没有将ids 传递到params hash
【发布时间】:2016-08-02 22:44:53
【问题描述】:

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

预期的功能是,允许用户选择多个对象,当用户单击“提交”按钮时(我已经重新将“提交”按钮标记为“交换”以阐明用户的功能”)

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

代码如下:

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 } ) %>");

【问题讨论】:

    标签: ruby-on-rails ajax forms


    【解决方案1】:

    尝试这样的事情

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

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

    【讨论】:

    • 控制台日志上还有参数?
    • 您的建议只是返回一个错误 - 您没有正确使用 check_box_tag。
    • &lt;%= check_box_tag "carpool[event_ids][]", event.id, true %&gt; 抱歉,我使用的是 simple_form 所以让我很困惑
    • 添加“true”使该框默认选中。这也不是我所追求的。我刚刚解决了它-我将发布解决方案供您查看。与我使用 check_box_tag 无关。再次感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多