【问题标题】:Coffeescript rails select one of two modelsCoffeescript rails 选择两种型号之一
【发布时间】:2013-05-30 02:56:15
【问题描述】:

我有两个 ruby​​ 模型,

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

我的 html 中有一个按钮 id“only-photo”和一个按钮“only-cmets”,如果我点击第一个按钮,我只想选择照片。 我怎样才能只从@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"

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

谢谢!

【问题讨论】:

  • 为什么要添加这两个列表?为什么不同时维护并分别显示它们呢?
  • 在这种情况下,我认为您不应该使用 HTML ID,而应该使用类。
  • @MrYoshjii 是的,你是对的,但仍然是同样的问题!约旦,它在用户个人资料的一种“提要”中。但他可以选择他想要的模型!

标签: ruby-on-rails scope coffeescript


【解决方案1】:

试试这个:

<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')

【讨论】:

  • 感谢您的回复!但在这里我得到了这个:#<0x007fe56fa254c0>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-03
  • 2015-09-28
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多