2

我正在构建一个日常交易 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 的创建表单中,我以管理员身份输入该交易与哪个品牌相关联:

管理员/交易.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

...不起作用。

我怎样才能做到这一点 ?

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

任何帮助表示赞赏。

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

4

2 回答 2

4

您需要处理存在的deal.brand情况nil

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
于 2013-10-12T16:30:13.233 回答
0

你的:brand专栏对我来说是正确的。如果您deal在控制台中找到 a ,如果 dodeal.brand和 ,您会得到什么deal.brand.name

于 2013-10-12T02:31:28.643 回答