Rails - 仅在选中复选框时删除特定项目

时间:2016-09-16 14:36:13

标签: ruby-on-rails checkbox

我只是在选中复选框时才尝试从我的模型中删除推文。

以下是截图:

enter image description here

以下是我视图中代码的开头:

<% @twits.each do |twit| %>
  <li>
    <%= link_to "#{twit.link}", twit_path(twit) %> | Engagement => <%= twit.engagement %> | <%= twit.like %> likes | <%= twit.retweet %> retweets | on <%= twit.first_date %>
    <%= check_box_tag("delete[#{twit.id}]",1) %> -
    <%= link_to twit_path(twit) do %>
      <i class="glyphicon glyphicon-eye-open"></i>
    <% end %> -
    <%= link_to twit_path(twit), method: :delete do %>
      <i class="glyphicon glyphicon-trash"></i>
    <% end %>
  </li>
<% end %>

EDIT =&gt;这是我的控制器破坏动作,非常基本。

def destroy
 @twit.destroy
 redirect_to twits_path
end

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你需要Javascript。分配classid以删除链接。

<%= link_to 'javascript:void(0);', class: 'delete-link', data: { id: "#{twit.id}" } do %>
  <i class="glyphicon glyphicon-trash"></i>
<% end %>
<%= link_to twit_path(twit), method: :delete, class: 'hidden', id: "twit_#{twit.id}" %>

CSS:

.hidden{
  display: none;
}

JS:

$('.delete-link').on('click', function(e){
  var twit_id = $(this).attr("data-id");
  if($("#delete_" + twit_id).is(':checked')){
    $("#twit_" + twit_id).trigger('click');
  }else{
    alert('Please check the checkbox!')
  }      
});

希望这有帮助!