在rails视图中查看数组或一条记录

时间:2012-10-17 21:00:50

标签: ruby-on-rails ruby activerecord

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

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

5 个答案:

答案 0 :(得分:3)

这将与@ar一起用作单个值和数组:

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

ArrayKernel上的方法。

答案 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 ....来获取值。