【问题标题】:foreign key doesn't work in activeadmin in rails project外键在rails项目的activeadmin中不起作用
【发布时间】:2016-02-13 06:36:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails ruby activeadmin


    【解决方案1】:

    没有错。

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

    你可以有这样的表格:

    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 =&gt; :select, :collection =&gt; Category.all.collect {|category| [category.name, category.id] }

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

    希望这会有所帮助。

    【讨论】:

    • 感谢您的快速留言。我应该把代码放在哪里?
    • ActiveAdmin.register Category do的块内
    • 类似上面的东西。
    • 完成。但我得到错误“未定义的方法`new_record? for nil:NilClass" 它说第 29 行和第 30 行有错误。第 29 行是 """f.inputs "Subcategories for category" do"""
    • 我刚刚更新完帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多