无法在关联模型的Active Admin索引属性中显示(belongs_to / has_many) – Rails 3.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的交易’创建表单中,我输入与交易相关联的品牌作为管理员:

管理员/ deal.rb

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

它工作得很好,我可以创建特定品牌的优惠。 但我无法在我的优惠管理列表中显示品牌名称:

 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 

……不起作用。

我怎样才能做到这一点 ?

我尝试了一切但我基本上不知道如何获取品牌的名称,因为它与Deal的表中的brand_id相匹配。

任何帮助赞赏。

更新我得到的错误是它不懂函数.name:未知方法’name’

你需要处理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 

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