【问题标题】:Can't display in Active Admin index attribute of associated model (belongs_to/has_many) - Rails 3.2无法在关联模型的 Active Admin 索引属性中显示(belongs_to/has_many) - Rails 3.2
【发布时间】:2013-10-11 20:23:09
【问题描述】:

我正在构建一个日常交易 Rails 应用程序来学习 RoR。

过去几个小时我遇到了一个问题:我无法在活动管理员上获取其他关联模型的模型属性。让我告诉你确切的问题:

我有两个模型:品牌(即交易的品牌)和交易。一个交易属于一个品牌,但一个品牌可以有多个交易。

models/deal.rb 是这样的:

class Deal < ActiveRecord::Base
  belongs_to :brand

我们有models/brand.rb:

class Brand < ActiveRecord::Base    
  has_many :deals

attr_accessible :name

我在迁移中做了 t.belongs_to,所以没关系。

在 Active Admin's Deals 的创建表单中,我以管理员身份输入该交易与哪个品牌相关联:

admin/deal.rb

ActiveAdmin.register Deal do
# -- Form -----------------------------------------------------------
  form do |f|
    f.inputs "Brand (i.e. client)" do
      f.input :brand_id, :label => "Select a brand:", :as => :select, :collection => Brand.all
    end

效果很好,我可以创建特定品牌的交易。但我无法在我的 Deals iun Active Admin'x index 列表中显示品牌名称:

ActiveAdmin.register Deal do
index do   
  selectable_column   
  # id_column 
  column :title
  column :deal_amount
  column :brand do |deal|
    link_to deal.brand.name, admin_brand_path(deal.brand)
  end

...不起作用。

我该怎么做?

我尝试了所有方法,但我基本上不知道如何获取品牌名称,因为它与交易表中的 brand_id 匹配。

任何帮助表示赞赏。

更新 我得到的错误是它不理解函数 .name: unknown method 'name'

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-3 activeadmin


【解决方案1】:

你需要处理deal.brandnil的情况。

ActiveAdmin.register Deal do
  index do   
    selectable_column   
    # id_column 
    column :title
    column :deal_amount
    column :brand do |deal|
      if deal.brand.present?
        link_to deal.brand.name, admin_brand_path(deal.brand)
      else
        status_tag('Empty')
      end
    end
  end
end

【讨论】:

    【解决方案2】:

    您的:brand 列对我来说是正确的。如果您在控制台中找到deal,如果执行deal.branddeal.brand.name,您会得到什么?

    【讨论】:

    • 今晚我会在控制台上试试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多