2013-02-28 65 views
0

我已將updated_by屬性添加到我的指南模型中,該模型存儲更新指南的人員的user_id。我想在我的節目視圖作爲人的PROFILE_NAME誰在guidelines_controller.rb updated_by顯示用戶profile_name知道user_id

顯示此:

def update 

    @guideline = Guideline.find(params[:id]) 


    respond_to do |format| 
     if @guideline.update_attributes(params[:guideline]) 
     @guideline.update_attribute(:updated_by, current_user.id) 

這似乎很好地工作,並分配當前用戶的ID來updated_by。

def show 

    @guideline = Guideline.find(params[:id]) 
    @created = @user.where(:id=>@guideline.updated_by).first.profile_name 

然後我型我秀觀點

<%= @created %> 

的錯誤是

NoMethodError (undefined method `where' for nil:NilClass): 
    app/controllers/guidelines_controller.rb:137:in `show' 

我怎樣才能從updated_by ID配置文件名稱?

回答

1

這條線:

@created = @user.where(:id=>@guideline.updated_by).first.profile_name 

應改爲:

@created = User.where(:id=>@guideline.updated_by).first.profile_name 

where是在User模型類方法。 @user(通常)指在此情況下您尚未實例化的用戶實例。 (這是nil,這就是爲什麼你得到了NilClassError。)

一個更清潔的這條線的版本是:

@created = User.find(@guildeline.updated_by).profile_name 

由於User.find找到一個給定USER_ID用戶。

2

您需要調用finder作爲類方法而不是對象方法。

@created = User.where(:id => @guideline.updated_by).first.profile_name 

或清潔劑

@created = User.find(@guideline.updated_by).profile_name 

也有可能,你可能需要通過@guideline.updated_by.id,而不是@guideline.updated_by進行搜索。在這種情況下,這將是:

@created = User.find(@guideline.updated_by.id).profile_name 
1

錯誤是由於您調用了@user而不是User的位置。請致電

@created = User.where(:id=>@guideline.updated_by).first.profile_name 

不確定這是唯一的問題,但讓我們逐一處理它們。

相關問題