我尝试将对象插入数组,但不是插入数组,而是在屏幕上打印内存地址。
我的控制器中有以下代码:
@article = Article.new("test","test1")
@articles << @article #this line causes the prints
我的观点有这段代码:
<%=
@articles.each do |a|
a.titulo + " / " + a.texto
end
%>
答案 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}}过滤器和/或......)