3

我有一个值的哈希值,我试图循环以在我的视图中显示这些值。

哈希设置为:

{:position=>#<Position id: 2, user_id: 1, title: "Something", city: "Denver", state: "CO",   
created_at: "2012-07-06 02:55:42", updated_at: "2012-07-06 02:55:42">, :experience=>[#
<Experience id: 4, user_id: 1, position_id: 2, description: "Did some stuff", created_at: 
"2012-07-02 06:24:33", updated_at: "2012-07-02 06:24:33">, #<Experience id: 6, user_id: 1, 
position_id: 2, description: "Did other stuff", created_at: "2012-07-02 06:24:33", 
updated_at: "2012-07-02 06:24:33">]}

它是通过获取 ActiveRecord 结果并将它们插入到哈希中创建的(如果您想要更多详细信息,我很乐意添加它们)。

在我看来,我尝试遍历哈希:

<% for i in 0..@positions.length %>
  <%= @positions[i][:position][:title] %>
  <%= @positions[i][:position][:city] %>
<% end %>

当我在浏览器中打开它时,我得到一个错误undefined method '[]' for nil:NilClass。如果我只使用@positions[i],它将转储原始哈希(第一个,然后是第二个,依此类推)。当我添加时[:position],它不起作用。我可以使用访问控制台中的值@positions[0][:position][:title]。当我尝试在控制台中编写循环时,我得到了同样的错误。

我知道这i很重要,因为我可以让它在浏览器中显示值并且它工作正常。

我尝试过使用@positions.each do |job|但遇到了同样的错误。我尝试在其他地方添加另一个索引:@positions[i][:position][0].

基本上,我有两个模型:职位和经验。经验是一个孩子的定位。我想获得给定职位的经验,但只能获得某些经验,例如在特定时间范围内发生的经验。很可能有更好的方法来解决这个问题,我只是不知道,所以我愿意接受建议。

谢谢。

4

1 回答 1

4

看来您有一个 Postion 类的对象分配给键:position。因此,您可以通过访问器方法访问 title 和 city ,而不是使用[].

<% @positions.each do |job| %>
  <%= job[:position].title %>
  <%= job[:position].city %>
<% end %>
于 2012-07-06T05:31:41.507 回答