将对象添加到数组?

时间:2014-11-20 17:59:06

标签: ruby-on-rails ruby arrays object insert

我尝试将对象插入数组,但不是插入数组,而是在屏幕上打印内存地址。

我的控制器中有以下代码:

@article = Article.new("test","test1")
@articles <<  @article     #this line causes the prints

我的观点有这段代码:

<%=
    @articles.each do |a|
    a.titulo + " / " + a.texto
    end
%>  

4 个答案:

答案 0 :(得分:3)

您的问题在于如何呈现@articles

<%= @articles.each do |a| a.titulo + " / " + a.texto end %>

each的返回值是数组本身。您想渲染数组中的每个元素,因此您应该执行以下操作:

<% @articles.each do |a| %> 
  <%= a.titulo + " / " + a.texto %>
<% end %>

答案 1 :(得分:1)

这可能是预期的行为。如果@articles确实是一个数组,那么这应该可行。只需在追加后检查数组,并确保新添加的元素在那里。如果您是从控制台执行此操作,那么您看到的打印可能是控制台行为,而不是<<行为。

由于下面的评论,我改变了我的答案以反映实际问题。您正在尝试将枚举数呈现给视图,而不是文章。您的观点应如下所示:

<% @articles.each |a| %>
  <%= a.titulo + " / " + a.texto %>
<% end %>

答案 2 :(得分:1)

你可以强迫@articles成为这样的数组:

@articles ||= []

然后像你已经在做的那样添加你的@article

答案 3 :(得分:1)

使用@articles添加Array作为<<,然后再添加class MyController < ... def your_method @articles ||= [] @article = Article.new("test","test1") @articles << @article end ... end

E.g。

before_

(和/或{{1}}过滤器和/或......)