我正在做我的紅寶石項目,但我遇到了問題。 我在下面的紅寶石般的地方出現問題。Ruby on Rails在哪裏()
@talk = Talk.where(params[:ask])
我得到
"#<Talk::ActiveRecord_Relation:0x007f811404dae8>"
這從@talk
。 我在問我的數據庫中找到答案的價值。 如何打印where()
的談話價值?
我正在做我的紅寶石項目,但我遇到了問題。 我在下面的紅寶石般的地方出現問題。Ruby on Rails在哪裏()
@talk = Talk.where(params[:ask])
我得到
"#<Talk::ActiveRecord_Relation:0x007f811404dae8>"
這從@talk
。 我在問我的數據庫中找到答案的價值。 如何打印where()
的談話價值?
如果您在你的談話對象中有不同的詢問值,那麼你可以做
@talk = Talk.find_by(ask: params[:ask])
這將返回一個單一談話對象。如果沒有找到這樣的詢問值,則返回零。
只有在調用像first,each等特殊方法時纔會檢索對象。這被稱爲延遲加載。
@talk = Talk.where(params[:ask])
@talk = Talk.where(params[:ask]).first
這樣你會得到將由您返回的第一個條目,其中,你可以閱讀一些關於延遲加載VS預先加載上this線程
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
'params [:ask]'是什麼?以及您要搜索的數據庫中有哪些列? 哪裏會返回一個集合。如果你只想要第一條記錄匹配查詢,那麼在末尾加上'.first' –