2016-09-14 24 views
1

我有我的ActiveAdin接口上的多個ressources,其中一人返回我一個錯誤,當我在索引視圖「/管理/ recommandations」以下消息去:NameError在管理:: Recommandations#指數

NameError in Admin::Recommandations#index 
Showing /home/charles/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/bundler/gems/activeadmin-0a5a15b88bff/app/views/active_admin/resource/index.html.arb where line #2 raised: 
uninitialized constant Recommandation::Writer 

推薦功能很簡單:一個用戶可以通過提出建議對其他用戶進行評分。在我的推薦模式中,我有一個用戶(評分者)和一位作家(撰寫推薦者)。

Recommandation型號:

class Recommandation < ActiveRecord::Base 
    before_validation:check_models 

    belongs_to :user 
    validates :user_id, presence: true 
    validates_associated :user 

    # Il s'agit de l'utilisateur qui inscrit la recommandation 
    has_one :writer, :foreign_key => "writer_id" 
    validates :writer_id, presence: true 
    validates_associated :writer 

    validates :modele, presence: true 

    ## 
    # @return L'origine liée 
    def writer 
    if self.writer_id != nil 
     User.find(self.writer_id) 
    end 
    end 

我可以用「/管理/ recommandations/1」訪問我的每個Recommandation ressources的,有一個作家是一個用戶,所以我不明白問題出在哪裏。

+0

看起來像你使用'recommandation :: Writer'而不是'recommandation.writer'?如果是這樣,請檢查類和實例方法之間的差異。 –

+0

除非@NilsLandt正確,否則您可能需要指定類名:'has_one:writer,foreign_key:「writer_id」,class_name:':: Writer''。 '::'指示它在根名稱空間中查找類。 – max

+0

我不在我的代碼中的任何地方使用'recommandation :: Writer'。插入'class_name:':: Writer''後,我得到了同樣的錯誤,但與'Writer'而不是'Recommandation :: Writer' –

回答

0

如果選擇命名協會,是不同從型號名稱應指定class_name選項:

has_one :writer, foreign_key: :writer_id, class_name: User 

此外,如果你正確設置你的數據庫,這個方法:

def writer 
    if self.writer_id != nil 
     User.find(self.writer_id) 
    end 
    end 

是多餘的,因爲Rails會爲您處理關聯的writer

+0

它現在好了,謝謝! –