外键在 rails 项目的 activeadmin 中不起作用

foreign key doesn't work in activeadmin in rails project

我在 rails 项目的 activeadmin 中遇到了一个奇怪的问题。
我创建了新的 rails 项目和两个表如下。

rails g model category title:text

rails g model subcategory category:references title:text

子类别属于引用关键字具有外键 "category_id" 的类别。 我已将类别和子类别模型更改如下。

class Category < ActiveRecord::Base
    has_many :subcategories, dependent: :destroy
end

class Subcategory < ActiveRecord::Base
  belongs_to :category
  default_scope -> { order(created_at: :desc) }
end

我在 Gemfile 中添加了 activeadmin gem 并安装了。

ActiveAdmin.register Category do

    permit_params :title

end

ActiveAdmin.register Subcategory do

    permit_params :category_id, :title

end

登录成功
我添加了新类别。如果我单击子类别以创建新的子类别,则类别项会带来与图像类似的错误。

我想显示我添加的分类。 最好的问候。

没有错误。

那些是类别对象。现在由您决定要显示类别对象的哪个属性。名称?描述?

你可以有这样的表格:

ActiveAdmin.register Subcategory do
  permit_params :name, :description, :category_id

  form do |f|
    f.semantic_errors *f.object.errors.keys

    f.inputs "Details" do
      f.input :name
      f.input :description
      f.input :category_id, :as => :select, :collection => Category.all.collect {|category| [category.name, category.id] }
    end
    f.actions
  end
end

注意这一行:f.input :category_id, :as => :select, :collection => Category.all.collect {|category| [category.name, category.id] }

我是说用所有现有类别填充子类别字段,显示它们的名称,并使用它们的 ID。

希望对您有所帮助。