我正在构建每日交易Rails应用程序以学习RoR。
我在过去的几个小时内遇到了一个问题:我无法获得活动管理员上其他相关模型的模型属性。让我告诉你这个问题:
我有两种模式:品牌(即交易的品牌)和交易。交易属于品牌,但品牌可以有很多交易。
models / deal.rb是这样的:
class Deal < ActiveRecord::Base
belongs_to :brand
我们有模特/ brand.rb:
class Brand < ActiveRecord::Base
has_many :deals
attr_accessible :name
我在我的迁移中做了t.belongs_to所以这没关系。
在Active Admin's Deals'创建表单中,我以管理员的身份输入与该交易相关联的品牌:
管理员/ 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
效果很好,我可以创建特定品牌的优惠。但我无法在我的优惠管理列表中显示品牌名称:
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:未知方法'name'
答案 0 :(得分: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
答案 1 :(得分:0)
您的:brand
列对我来说是正确的。如果您在控制台中找到了deal
,那么deal.brand
和deal.brand.name
会得到什么?