0

この宝石の可能性を確認するために、小さなプロジェクトでActsAsTaggableOnを使用しています。だから私は製品を持っており、製品はタグを持つことができます。

私のProduct_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?(タグ)何かが足りないか、何か間違ったことをしています。

何か案は?あなたの助けをありがとう=)

乾杯。

4

1 に答える 1

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 %>

したがって、オブジェクトの代わりに、その名前がリストに存在するかどうかを確認したいと思います。

これが誰かを助けることを願っています。

于 2011-08-29T20:35:19.637 に答える