【发布时间】:2011-06-09 07:08:18
【问题描述】:
我试图弄清楚如何为循环的每次迭代添加记录到现有对象。我很难发现对象和数组之间的区别。
我有这个
@events = Event.find(1)
@loops = Choices.find(:all, :limit => 5) #so loop for 5 instances of choice model
for loop in @loops
@events = Event.find(:all,:conditions => ["event.id = ?", loop.event_id ])
end
我正在尝试根据循环变量的 id 向现有 @events 对象添加新事件。但是 ( = ) 运算符只是创建了 @events 对象的一个新实例。
我尝试将 ( += ) 和 (
“你没想到有一个 nil 对象!你可能期待一个 Array 的实例。在评估 nil 时发生错误”
我尝试创建一个数组
events = []
events << Event.find(1)
@loops = Choices.find(:all, :limit => 5) #so loop for 5 instances of choice model
for loop in @loops
events << Event.find(:all,:conditions => ["event.id = ?", loop.event_id ])
end
但我不知道如何在视图中调用该数组属性
对于对象,我能够在视图中创建一个循环并调用该对象的所有属性...
<table>
<% for event in @events %>
<tr>
<td><%= link_to event.title, event %></td>
<td><%= event.start_date %></td>
<td><%= event.price %></td>
</tr>
<% end %>
</table>
如何使用数组集来做到这一点?
所以问题是
1) 数组和对象有什么区别?
2) 有没有办法为每次迭代添加到现有对象中?
3)如果我使用数组,有没有办法在视图中调用每个数组记录的属性?
【问题讨论】:
标签: ruby-on-rails ruby arrays hash