1

我有两个红宝石模型,

@photos = Photo.all
@comments = Comment.all
@objects = @photos + @comments

我在我的 html 中有一个按钮 id“only-photo”和一个按钮“only-comments”,如果我点击第一个我只想选择照片。我怎样才能只从@objects 中选择@photos?在咖啡脚本中

这是我尝试过的

<div id="list">
 <% @objects.each do |l| %>
   <% if l.class == "Photo"%>
     <div id="photo" class="photo">
      <%= render "shared/photo", :photo => l %>
     </div>
...
</div>

<div id="filters">
 <button id="only-photo">
 </button>
...
</div>

然后在 Coffeescript 我只是这样做:

$("#filters").on "click", "#only-photo", ->
 $("#list #comment").removeClass "active"
  $("#list #photo").addClass "active"

但我相信有一种更优雅的方式来做这些事情!我们不能从咖啡脚本中过滤范围吗?或类似的东西?

谢谢!

4

1 回答 1

0

试试这个:

<div id="list">
 <% @objects.each do |l| %>
   <div id="<%= l.class.to_s.downcase %>_<%= l.id %>" class="<%= l.class.to_s.downcase =%>">
    <%= render "shared/#{l.class.to_s.downcase}", :photo => l %>
   </div>
 <% end %>
</div>


<div id="filters">
  <button id="only-photo" class="filter" value="photo">
  </button>
  <button id="only-comment" class="filter" value="comment">
  </button>
  </button> 
</div>

咖啡:

$("button.filter").on "click", ->
  class_to_hide = $(this).attr('value')
  $("."+class_to_hide).toggleClass('active')
于 2013-05-29T18:41:39.677 回答