【问题标题】:Can`t Update or Delete when using Active Admin使用 Active Admin 时无法更新或删除
【发布时间】:2017-04-06 01:52:04
【问题描述】:

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

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

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

image

我用这样的文章和标签模型建立了多对多关系。

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

标签.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

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

【问题讨论】:

  • 请不要在标题中使用“【Ruby on Rails】”之类的伪标签。

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


【解决方案1】:

您忘记允许 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

【讨论】:

  • 我总是忘记这样做,然后它就神奇地不起作用。添加新列时请务必记住此步骤。
猜你喜欢
  • 2020-09-25
  • 1970-01-01
  • 2020-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多