ActsAsTaggableOn用复选框标记

时间:2011-08-28 12:03:49

标签: ruby-on-rails-3 acts-as-taggable-on

我正在一个小项目中使用ActsAsTaggableOn,看看这个宝石有什么可能性。 所以我有产品和产品可以有标签。

在我的产品_form

<%= form_for(@product) do |f| %>
<div class="field">
  <%= f.label :title %><br />
  <%= f.text_field :title %>
</div>
Tags<br />
<% tag_cloud(@tags, %w(css1 css2 css3 css4)) do |tag, css_class| %>
    <%= check_box_tag 'product[tag_list][]',tag.name,@product.tag_list.include? (tag),:class => css_class %>
    <%= tag.name %>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>

在ProductController中,我定义了tag_cloud方法

 def tag_cloud
   @tags = Product.tag_counts_on(:tags)
 end

因此,在我的编辑产品中,我可以使用复选框标记产品,但如果产品已经有标签,则不会选中这些复选框。我假设在这里@ product.tag_list.include? (标签)我错过了什么或做错了什么。

有什么想法吗?谢谢你的帮助=)

干杯。

1 个答案:

答案 0 :(得分:3)

今天,经过仔细阅读后,我找到了答案。

这一行

<%= check_box_tag 'product[tag_list][]',tag.name,@product.tag_list.include? (tag),:class => css_class %>

应该是

<%= check_box_tag 'product[tag_list][]',tag.name,@product.tag_list.include? (tag.name),:class => css_class %>

因此,我想检查列表中是否存在该名称,而不是对象。

希望这有助于某人。