在我的方法中通过一些计算得到数据,然后我需要在视图中查看它,但是如果写
@ar.each do |a|
当我只有一条记录时我得到错误,当我有一个错误时,每个都是坏主意。那么如何做到这一点?
所以我在方法中有这样的代码:
non_original = []
@articles.each do |a|
non_original << get_non_tecdoc("LA44", 1, "KNECHT")
end
@non_original = non_original
get_non_tecdoc返回对象,或者没有...
所以我认为:
-@non_original.each do |no|
=no.brand
=no.description
=no.price
=no.quantity
但是如果@non_original有一条记录怎么办,那么@ non_original.each会给出错误。那么如何查看视图?如果@non_original有一条记录,而不是简单的@ non_original.brand等,但是如果不止一条,那么使用每一条循环?
答案 0 :(得分:3)
答案 1 :(得分:2)
<%= debug @ar %>
这将为您提供一个很好的YAML格式(在假设ERB中)。
编辑:我相信这就是你想要的,因为你对调试不感兴趣。
在你的控制器中,使用splat运算符将单例元素转换为数组(它不会修改数组):
@ar = *@ar
然后@ar.each
将在您的视图中按预期工作。
或者,您可以查看您的观点:
<% if @ar.is_a?(Array) %>
<% @ar.each ... %>
<% else %>
<%= @ar %>
<% end%>
答案 2 :(得分:0)
为什么不尝试使用@ ar.inspect并将其输出到控制台以查看实例变量内容。
答案 3 :(得分:0)
只要@ar是一个数组,就不应该出错。如果要返回一条记录,请将其更改为包含一条记录的数组。
如果您使用active record query interface之类的“where”子句;它将返回一个包含0个或更多active_record对象的数组。如果使用find,它将返回active_record对象的一个实例。
因此,如果您的查询方法是使用活动记录where子句@ar应该始终返回一个数组。
答案 4 :(得分:-1)
请试试这个:
Tablename.find_by_table_id
示例:
如果account_id为10,请按照以下示例
@getResults = Account.find_by_account_id(10)
它将提供单一记录。 我们可以使用@ getResults.id,@ getResults.name ....来获取值。