如何在选择/取消选择ror应用程序中的所有复选框中调用所有复选框ID?

时间:2018-04-10 08:10:06

标签: ruby-on-rails

我正在尝试在我的ror应用程序中添加select / deselect all复选框(我尝试单击select all并删除我表中的所有记录)。如果单击全选复选框,则不会选中表中的所有复选框,同时也不会调用delete方法。

这是我的Controller文件:

def destroy
      @messages = Message.where(id: params[:message_ids])
      @messages.destroy_all
      respond_to do |format|
      format.html { redirect_to messages_url, notice: 'Message was successfully destroyed.' }
      format.json { head :no_content }
    end
  end 

我在index.html.erb文件中使用jquery代码。这是:

<p id="notice"><%= notice %></p>

<h1>Messages</h1>
<table>
  <thead>
    <tr>
      <th ><%= check_box_tag "message_ids[]",class: 'selectall' %></th>
      <th>Content</th>
      <th colspan="3"></th>
    </tr>
  </thead>
  <tbody>
  <%= form_tag messages_path, method: :delete do %>
    <% @messages.each do |message| %>
      <tr>
        <td><%= check_box_tag "message_ids[]", message.id%></td>
        <td><%= message.content %></td>
        <td><%= link_to 'Show', message %></td>
        <td class="edititem"><%= link_to 'Edit', edit_message_path(message)%></td>
      </tr>
    <% end %> 
  </tbody>
</table>
<br>
<%= submit_tag :Delete,class: 'btn' %>
</br>
<% end %>
<br>
<%= link_to  'New Message', new_message_path %> 
</br>
<script>
$('#selectall').click(function(event) {
  if (this.message_ids) {
    $(':checkbox').attr('message_ids', true);
  } else {
    $(':checkbox').attr('message_ids', false);
  }
});
</script>

我是初学者,请帮助我解决我的问题......

3 个答案:

答案 0 :(得分:0)

尝试类似

的内容
$(".selectall").click(function () {
    $('#my-table tbody input[type="checkbox"]').prop('checked', this.checked);
});

答案 1 :(得分:0)

$('.selectall').toggle(function(){
    $('#my-table tbody input[type="checkbox"]').attr('checked','checked');

},function(){
    $('#my-table tbody input[type="checkbox"]').removeAttr('checked');          
});

答案 2 :(得分:0)

1 =&GT;提供一个id(null),点击后触发所有复选框。

2 =&GT;在所有邮件复选框上提供一个公共类,该邮件将在点击id: 'select_all_messages'

时触发

like =&gt;

id: select_all_messages