我想使用acts_as_taggable_on将两种不同“类型”的标签(部门类别和免费标签)分配给公司模型。注意:我是 RoR 的新手!
如果仅使用标准文本输入字段,这很容易做到,但我想在一种类型(预定义的固定扇区类别标签)上使用复选框,然后允许用户在输入字段中添加逗号分隔标签.
我已经以各种方式解决了这个问题,......一个受到这个问题的启发......但我无法让它发挥作用
这是我到目前为止所拥有的:
# models/company.rb
class Company ...
acts_as_taggable_on :tags, :sectors
has_many :taggings,
:as => :taggable,
:include => :tag,
:class_name => "ActsAsTaggableOn::Tagging",
:conditions => { :taggable_type => "Company" }
has_many :sector_tags,
:through => :taggings,
:source => :tag,
:class_name => "ActsAsTaggableOn::Tag",
:conditions => {:context => "sectors"}
end
在表单中(使用 simple_form gem)我有......
# views/companies/_form.html.haml
= simple_form_for @company do |f|
= f.input :name
= f.association :sector_tags, :as => :check_boxes, :hint => "Please click all that apply"
= f.input :tag_list
= f.button :submit, "Add company"
在我的公司控制器中,我有
# controllers/companies_controller.rb
def create
@company = current_user.companies.build(params[:company])
if @company.save
...
end
但这会导致验证错误:
ActiveRecord::RecordInvalid in CompaniesController#create
Validation failed: Context can't be blank
谁能暗示我如何才能做到这一点?
一个相关的问题是,这是否是一个好方法?仅使用类别模型通过联合模型分配扇区标签会更好吗?
谢谢!