Rails 4 has_many通过主动管理员

时间:2014-09-28 21:51:40

标签: ruby-on-rails activeadmin has-many-through formtastic has-and-belongs-to-many

我正在尝试建立如下标准关系:

class Category < ActiveRecord::Base
  has_many :post_categories
  has_many :posts, :through => :post_categories
  accepts_nested_attributes_for :post_categories
end

class Post < ActiveRecord::Base
  has_many :post_categories
  has_many :categories, :through => :post_categories
  accepts_nested_attributes_for :post_categories
  attr_accessor :category_ids
end

class PostCategory < ActiveRecord::Base
  belongs_to post
  belongs_to category
end

我正在使用ActiveAdmin并需要设置复选框来描述关系。 我已经尝试了许多不同的方法来保存复选框。这是我的admin post.rb文件:

ActiveAdmin.register Post do

  permit_params :content, category_ids: []

  form do |f|
    f.inputs # Include the default inputs
    f.inputs "Categories" do
      f.input :categories, as: :check_boxes, collection: Category.all
    end
    f.actions # Include the default actions
  end
end

我尝试了不同的许可证参数,例如

permit_params :content, :categories
permit_params :content, post_categories_attributes: [:id, :post_id, :category_id]
permit_params :content, category_ids: [:id]

数据库的设置如rails指南中所示,除了从activeadmin保存之外,这种关系似乎在其他地方有效。我甚至尝试使用param.permit!来允许所有参数,但仍然没有运气。

我发现许多看似相同问题的帖子,但很多人给出了不同的答案,似乎没有任何效果。

有什么问题?

1 个答案:

答案 0 :(得分:0)

稍晚但是这个问题首先用Google搜索,所以我认为它对其他“googlers”有帮助

#models/post.rb

accepts_nested_attributes_for :categories#, allow_destroy: true
#AA Post conf file

permit_params :content, category_ids: []