2013-12-10 47 views
0

以簡單的答案令我感到不快。從Ruby on Rails的顯示視圖中調用db數據時出現錯誤

我得到這個錯誤: 爲未定義的方法`介紹」爲#

我的模型:

約模型

belongs_to :user 

用戶模型

has_many :abouts 

用戶控制器

def show 

     @user = User.find(params[:id]) 
     @about = @user.abouts 

用戶顯示視圖

<div class="col-md-12"> 
<h2 class="page-header">Introduction</h2> 

<p> <%= @about.intro %> <br></p> 

+0

'#'之後的其餘錯誤是什麼?我認爲這是因爲@ user.abouts正在返回一個About對象數組,所以調用它們的信息沒有任何意義。你需要遍歷它們來獲取信息。 – jstim

回答

3

每個Userhas_manyAbout對象,所以@user.abouts將返回一個ActiveRecord::Relation對象類型。此對象不是About對象 - 相反,它是可以迭代訪問每個組成成員的About對象的集合。請嘗試以下操作:

# app/controllers/users_controller.rb 
def show 
    @user = User.find(params[:id]) 
    @abouts = @user.abouts 
end 

# app/views/users/show.html.erb 
<% @abouts.each do |about| %> 
    <p> <%= about.intro %> <br></p> 
    <p> <%= about.cost %> <br></p> 
<% end %> 

編輯

如果 - 作爲OP在suggested edits暗示 - 只有一個About記錄應該從User返回,那麼最好放置在這個邏輯控制器比在視圖中:

# app/controllers/users_controller.rb 
def show 
    @user = User.find(params[:id]) 
    @abouts = @user.abouts.first 
end 

# app/views/users/show.html.erb 
<p> <%= @about.intro %> <br></p> 
<p> <%= @about.cost %> <br></p> 
+0

這個答案看起來不錯。讓我檢查一下。 –

+1

請做。如果答案正確地解決了您的問題,請考慮將其視爲正確。 – zeantsoi

+0

@LeslyRevenge,我已回覆您的修改。擬議的代碼是否解決您的問題? – zeantsoi

相關問題