ビューに値を表示するためにループしようとしている値のハッシュがあります。
ハッシュは次のように設定されます。
{: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]
と、生のハッシュがダンプされます(最初のハッシュ、次に2番目のハッシュなど)。私が追加したとき[:position]
、それは機能しません。を使用してコンソールの値にアクセスできます@positions[0][:position][:title]
。コンソールでループを作成しようとすると、同じエラーが発生しました。
i
ブラウザに値を表示させることができ、正しく機能しているので、それがカウントされていることはわかっています。
使用してみ@positions.each do |job|
ましたが、同じエラーが発生しました。他の場所に別のインデックスを追加してみました:@positions[i][:position][0]
。
基本的に、私には2つのモデルがあります。位置と経験です。経験はポジションの子です。特定のポジションで経験値を取得したいのですが、特定の時間枠内で発生するような特定の経験値のみを取得します。これにはおそらくより良いアプローチがありますが、私はそれを知らないので、提案を受け入れます。
ありがとう。