2013-10-10 122 views
3

我正在構建每日交易Rails應用以學習RoR。如何使用belongs_to/has_many關係在Active Admin索引中顯示關聯模型的屬性(Rails 3.2/Active Admin)

我在過去的幾個小時裏面臨着一個問題:我無法獲得活動管理員上其他關聯模型的模型屬性。讓我告訴你到底是什麼問題:

我有兩種模式:品牌(即交易的品牌)和交易。一筆交易屬於一個品牌,但一個品牌可以有很多交易。

型號/ deal.rb是這樣的:

class Deal < ActiveRecord::Base 
    belongs_to :brand 

,我們的產品型號/ brand.rb:

class Brand < ActiveRecord::Base  
    has_many :deals 

    attr_accessible :name 

,我做我的遷徙中的t.belongs_to所以這是確定。

在主動管理的交易創建形式,I型,爲管理員,哪個牌子的交易相關聯:

管理/ game.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 
end 

...不起作用。

我該怎麼做?

我嘗試了一切,但我基本上不知道如何獲取品牌的名稱,因爲它與交易表中的brand_id匹配。

任何幫助表示讚賞。

回答

3

有兩件事情似乎丟失:

class Deal < ActiveRecord::Base 
    belongs_to :brands, foreign_key: :brand_id, class_name: 'Brand' 
end 

這是假設你的意思是partner是一個Brand和您的架構使用brand_id的這種關係。

在你的表格,你可以簡單地使用:

form do |f| 
    f.inputs "Brand (i.e. client)" do 
    f.input :partner, label: 'Select a brand:' 
    end 
end 

link_to電話實際上不會鏈接到一個網址你有它的方式。

column :brand do |deal| 
    link_to deal.partner.name, admin_brand_path(deal.partner) 
    # or simpler 
    auto_link deal.partner 
end 

我會強烈建議嘗試在你的命名保持一致,因爲這將讓事情少了很多混亂,將需要更少的代碼纔可以正常工作。即

class Deal < ActiveRecord::Base 
    belongs_to :brand 
end 

f.input :brand, label: 'Select a brand:' 

auto_link deal.brand 

而你的數據庫列仍然可以命名爲brand_id

+0

我會嘗試一些這一點,但它是我的錯誤,當我在SO複製代碼:只有2個型號品牌和處理(所以firstis:class Deal Mathieu

5
show do |f| 
    panel "Subject" do 
    attributes_table_for f, :name, :description, :is_visible 
    end 

    panel "Pages in List View" do 
    table_for(f.pages) do |page| 
     column :name 
     column :permalink 
     column :is_visible 
    end 
    end 

    panel "Pages in View " do 
    div_for(f.pages) do |page| 
     panel page.name do 
     attributes_table_for page, :name, :description, :is_visible 
     end 
    end 
    end 

end 

end 

你可以做相同的樣式嵌套關係作爲父模型

相關問題