使用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>
答案 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 %>