我正在做我的红宝石项目,但我遇到了问题。 我在下面的红宝石般的地方出现问题。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' –