使用Active Admin

时间:2017-04-06 01:52:05

标签: ruby-on-rails ruby ruby-on-rails-4 rubygems

我想问一下如何自定义活动管理员。 我正在创建自己的博客并使用活动的admin gem创建管理页面。 这通过article_tag表与article和tag有很多关系。

我想要做的是从文章面板添加标签,我能够在文章面板中显示标签视图,但它不能正常工作。(保存一次后我不能更新或删除标签)

http://localhost:3000/admin/articles/new

image

我像这样与Article和Tag模型建立了多对多关系。

article.rb

class Article < ActiveRecord::Base
    has_many :article_tags
    has_many :tags, through: :article_tags
accepts_nested_attributes_for :article_tags, :allow_destroy => true
end

tag.rb

class Tag < ActiveRecord::Base
    has_many :article_tags
    has_many :articles, through: :article_tags
end

article_tag.rb

class ArticleTag < ActiveRecord::Base
    belongs_to :article
    belongs_to :tag
end

我定制了这样的活跃管理员。

ActiveAdmin.register Article do

permit_params :title, :description, :url, :image_url, :media, article_tags_attributes: [:article_id, :tag_id, :name, :_destroy, :_edit]

form do |f|
    # f.semantic_errors *f.object.errors.keys
      f.inputs "Admin Details" do
      f.input :title
      f.input :description
      f.input :url
      f.input :image_url
      f.input :media
      f.input :publish
    end
    f.inputs "Articles" do
      f.has_many :article_tags do |t|
        t.input :tag
      end
    end
    f.actions
  end
end

但是在我用标签保存文章后,我无法更新标签或删除标签...... 有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您忘记了允许article_tag对象的:id属性。它在更新/删除现有嵌套对象时传递。

ActiveAdmin.register Article do
  permit_params :title, :description, :url, :image_url, :media, article_tags_attributes: [:id, :article_id, :tag_id, :name, :_destroy, :_edit]
  ...
end