我在rails 3应用程序中使用ActiveAdmin和acts_as_taggable,我可以将标记列表显示为编辑页面上的清单,我可以使用控制台添加标记然后删除他们使用表单,但如果我尝试使用
添加标签,则在保存表单时会出错“验证失败:上下文不能为空”
我只有一个标记上下文(标记)。
ActiveAdmin表单代码为:
form :html => { :multipart => true } do |f|
f.inputs "Details" do
f.input :title
f.input :itinerary, :as => :select, :collection => Itinerary.all
f.input :description
f.input :address
f.input :contact_details
f.input :url
f.input :phone
f.input :nearest_tube
f.input :timetable
f.input :price
f.input :tags, :as => :check_boxes, :multiple => true, :collection => @tags
f.input :image, :as => :file
end
f.buttons
end
在模型中我有
class Ticket < ActiveRecord::Base
has_and_belongs_to_many :itinerary
acts_as_taggable_on :tags
has_attached_file :image, :styles => { :medium => "210x140>", :thumb => "100x100>" }
end
如果我添加
attr_writer :tag_ids
到模型时,它不再是保存错误,但仍然不会将所选标签保存在列表中。
谢谢!
答案 0 :(得分:6)
它没有使用复选框,但这对我很有用:
f.input :tag_list, :hint => 'Comma separated'
答案 1 :(得分:1)
从Nathan的回答中获取灵感,tag_list获取了一个标签名称列表,因此您可以通过传递一组标签名称来使用复选框:
f.input :tag_list, :as => :check_boxes,
:collection => ActsAsTaggableOn::Tag.all.map(&:name)