【问题标题】:Saving tags with acts_as_taggable and activeadmin使用acts_as_taggable 和activeadmin 保存标签
【发布时间】:2011-12-02 11:29:44
【问题描述】:

我在 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

对模型来说,保存不再报错,但仍然没有将选中的标签保存到列表中。

谢谢!

【问题讨论】:

  • 想知道您是否解决过这个问题?我遇到了同样的事情或类似的事情。我的问题是它传递的是 ID 而不是名称。它正在使用我传递给它的 id 的名称创建新标签。

标签: ruby-on-rails-3 activeadmin acts-as-taggable


【解决方案1】:

它不使用复选框,但这对我来说效果很好:

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

【讨论】:

    【解决方案2】:

    从 Nathan 的回答中汲取灵感,tag_list 采用标签名称列表,因此您可以通过传递标签名称集合来使用复选框:

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

    【讨论】:

    • 如果已经有标签,checkboxed是否有预勾选功能?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多