(Rails 4)Acts_as_taggable_on:使用“Tag”以外的模型

时间:2015-03-05 11:24:48

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

我正在尝试实现acts_as_taggable_on gem。在我的设置中,我有一个名为Discipline的模型,预先填充了大约40个名字。

我还有一个我要标记的Model Micropost - 使用包含该学科数据库中所有名称的选择框。我以为我可以调用我想要的模型中的acts_as_taggable_ - 在这种情况下是Disciplines,但它不适用于我当前的设置。

   class Micropost < ActiveRecord::Base
         acts_as_taggable 
         acts_as_taggable_on :disciplines  
    end  

这是表格......

     <%= simple_form_for(@micropost) do |f| %>
     <%= render 'shared/error_messages', object: f.object %>

     <%= f.input :tag_list, :as => :select,
              :multiple => :true,
              :collection => ActsAsTaggableOn::Tag.pluck(:name) %>

     <%= f.text_area :content, placeholder: "What is your question?", :style => "height:75px;" %>
     <%= f.submit "Post", class: "btn btn-primary" %>
     <% end %>

我可以从文档中看出有一种方法可以做到这一点....但我想我只是没有得到它。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为您不能使用除默认Tag和Taggings模型之外的模型的acts_as_taggable_on。

替代方法#1 使用包含您的学科名称的预先填充的40个标签为您的数据库设定种子。

替代方法#2 使用bitmask_attributes为您的40个学科。 例如,在我的应用程序中,我有:

bitmask :instruments, as: [:others, :guitar, :piano, :bass, :mandolin, :banjo,
                               :ukulele, :violin, :flute, :harmonica, :trombone,
                               :trumpet, :clarinet, :saxophone, :viola, :oboe,
                               :cello, :bassoon, :organ, :harp, :accordion, :lute,
                               :tuba, :ocarina], null: false