2015-10-15 70 views
0

我正在做我的紅寶石項目,但我遇到了問題。 我在下面的紅寶石般的地方出現問題。Ruby on Rails在哪裏()

@talk = Talk.where(params[:ask]) 

我得到

"#<Talk::ActiveRecord_Relation:0x007f811404dae8>" 

這從@talk。 我在問我的數據庫中找到答案的價值。 如何打印where()的談話價值?

+0

'params [:ask]'是什麼?以及您要搜索的數據庫中有哪些列? 哪裏會返回一個集合。如果你只想要第一條記錄匹配查詢,那麼在末尾加上'.first' –

回答

1

如果您在你的談話對象中有不同的詢問值,那麼你可以做

@talk = Talk.find_by(ask: params[:ask]) 

這將返回一個單一談話對象。如果沒有找到這樣的詢問值,則返回零。

1

只有在調用像first,each等特殊方法時纔會檢索對象。這被稱爲延遲加載。

@talk = Talk.where(params[:ask])

@talk = Talk.where(params[:ask]).first

這樣你會得到將由您返回的第一個條目,其中,你可以閱讀一些關於延遲加載VS預先加載上this線程

1

where()將返回一個集合對象。您錯過了一個列名稱。

如果你想從集合訪問一個對象,請使用

@talk = Talk.where(column_name: params[:ask]).first #Or Talk.where(column_name: params[:ask]).last depending on the requirement 

如果您要訪問的所有對象,你將不得不遍歷每個對象返回,

@talks = Talk.where(column_name: params[:ask]) 

-unless @talk.nil? 
    @talks.each do |talk| 
    = talk.column_name 
相關問題