0

在我的方法中通过一些计算获取数据,然后我需要在视图中查看它,但是如果写

@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 等,但如果不止一条,则使用每个循环?

4

5 回答 5

3

这将与 @ar 作为单个值以及数组一起使用:

Array(@ar).each do |a|
  p a
end

这是KernelArray上的一种方法。

于 2012-10-17T21:06:18.527 回答
2
<%= debug @ar %>

这将为您提供一个不错的 YAML 格式,以便在您的视图中查看(假设 ERB)。

编辑:我相信这就是你想要的,因为你对调试不感兴趣。

在您的控制器中,使用 splat 运算符将单例元素转换为数组(它不会修改数组):

@ar = *@ar

然后@ar.each将在您看来按预期工作。

或者,您可以检查您的视图:

<% if @ar.is_a?(Array) %>
  <% @ar.each ... %>
<% else %>
  <%= @ar %>
<% end%>
于 2012-10-17T21:07:54.803 回答
0

只要@ar 是一个数组,就不会出现错误。如果您要返回一条记录,请将其更改为具有一条记录的数组。

如果您使用“where”子句等活动记录查询接口;它将返回一个包含 0 个或多个 active_record 对象的数组。如果您使用 find ,它将返回一个 active_record 对象的实例。

因此,如果您的查询方法使用活动记录 where 子句 @ar 应始终返回一个数组。

于 2012-10-17T21:58:59.973 回答
0

Why don't you try using @ar.inspect and output it to the console to see the instance variables contents.

于 2012-10-17T21:04:16.843 回答
-1

请试试这个:

Tablename.find_by_table_id

例子:

如果 account_id 为 10,则以以下示例为例,

@getResults = Account.find_by_account_id(10)

它将给出单个记录。我们可以使用@getResults.id,@getResults.name ....同样明智地获取值。

于 2012-10-17T21:08:13.947 回答