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]と、生のハッシュがダンプされます(最初のハッシュ、次に2番目のハッシュなど)。私が追加したとき[:position]、それは機能しません。を使用してコンソールの値にアクセスできます@positions[0][:position][:title]。コンソールでループを作成しようとすると、同じエラーが発生しました。

iブラウザに値を表示させることができ、正しく機能しているので、それがカウントされていることはわかっています。

使用してみ@positions.each do |job|ましたが、同じエラーが発生しました。他の場所に別のインデックスを追加してみました:@positions[i][:position][0]

基本的に、私には2つのモデルがあります。位置と経験です。経験はポジションの子です。特定のポジションで経験値を取得したいのですが、特定の時間枠内で発生するような特定の経験値のみを取得します。これにはおそらくより良いアプローチがありますが、私はそれを知らないので、提案を受け入れます。

ありがとう。

4

1 に答える 1

4

キー:positionに割り当てられた Postion クラスのオブジェクトがあるようです。したがって、 ではなく、アクセサ メソッドを介して title と city にアクセスします[]

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