使用acts_as_taggable_on将Rss中的css类添加到Rails中的各个标记

时间:2011-10-27 19:01:25

标签: ruby-on-rails ruby ruby-on-rails-3

使用acts_as_taggable_on效果很好。但是生成一个以逗号分隔的列表。我想知道为每个单独添加包装元素和类的最佳方法。我已经能够在jQuery中做到这一点,但我宁愿在rails帮助器中做到这一点。

item.tags = "big, bigger, biggest"
item.tag_list = ["big", "bigger", "biggest"]

渲染为:

<span class="tag">big</span>
<span class="tag">bigger</span>
<span class="tag">biggest</span>

2 个答案:

答案 0 :(得分:2)

这是一个帮助程序,可以根据发送的tag_list生成一个跨度列表。

def tags(tag_list)
  markup = ""
  tag_list.each do |tag|
    markup += content_tag(:span, tag, :class => "tag")
  end
  raw(markup)
end

然后你会用:

来调用它
<%= tags(item.tag_list) %>

将输出

<span class="tag">tag 1</span>
<span class="tag">tag 2</span>
<span class="tag">tag 3</span>

答案 1 :(得分:1)

这可能是一种更简洁的方法,无需创建新功能并将代码保留在视图中:

<% @item.tag_counts_on(:tags).map(&:name).each do |tag| %>
   <a href="/search/<%= tag %>">
    <span class="tag"><%= tag %></span>
   </a>
<% end %>