2011-12-02 58 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