2011-12-02 25 views
2

我在rails 3应用程序中使用ActiveAdmin和acts_as_taggable,并且我可以在编辑页面上将标签列表显示为清单,并且可以使用控制台添加标签,然后使用使用表单中删除他们,但它在保存表单,如果我试着和使用acts_as_taggable和activeadmin保存标签

添加标签错误“验证失败:上下文不能为空”

我只有一个标签上下文(标签)。

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

想知道你是否曾经解决过这个问题?我遇到了同样的事情或类似的东西。我的问题是传递一个ID而不是名称。并且它正在用传递给它的id的名称创建新标签。 – gsueagle2008

回答

6

它不使用复选框,但这个工作很适合我:

f.input :tag_list, :hint => 'Comma separated' 
1

从弥敦道的回答获得灵感,tag_list需要标记名称的列表,所以你可以通过集合使用复选框标签名称:

f.input :tag_list, :as => :check_boxes, 
    :collection => ActsAsTaggableOn::Tag.all.map(&:name) 
+0

如果复选框已经有标签,那么复选框是否具有预先检查过的功能? – newBike