0

私は以下からなるハッシュを持っています:

flow = ["a", "b", "c"]
h = [{"case_id"=>1, "a"=>{"x"=>"text", "option"=>"..." },"b"=>{"report"=>"text", "option"=>"..." } ,"c"=>{"y"=>"text", "option"=>"..." }},{"case_id"=>2, "a"=>{"x"=>"text", "option"=>"..." },"b"=>{"report"=>"text", "option"=>"..." } ,"c"=>{"y"=>"text", "option"=>"..." }}]
@case = 0
@report = ""
flow.each do |step|
  if h[@case][step]['report']
    @report = h[@case][step]['report']
  end
end

コンソールから次のエラーが発生します。

NoMethodError in MainController#index
undefined method `[]' for nil:NilClass

なぜ?!以前のプログラムでは、ruby 187を使用しても、問題はありませんでした。しかし今、ruby 193では、このエラーが発生します。

4

2 に答える 2

1
flow = ["a", "b", "c"]
h = { "a"=>{"x"=>"text", "option"=>"..." },"b"=>{"report"=>"text", "option"=>"..." } ,"c"=>{"y"=>"text", "option"=>"..." }}
flow.each do |f|
  if h[f]['report']
    #something
  end
end

Rubyには、列挙クラスによって提供される優れた反復ヘルパーがいくつかあります

http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-each

于 2012-10-17T12:47:07.343 に答える
0

hまたはh[a]が。になるまでエラーは発生しませんnil。質問を適切に更新してください。

于 2012-10-17T12:20:14.663 に答える