2016-03-23 9 views
-1
params[:mg_question_id].each do |question| 

     @poll=MgPollData.new 

     @poll.mg_question_id= question 

     params[:options_id].each do |k,v| 

      if k==question 
      @poll.answer= v 
      end 

     end 

     @poll_answers.save 

    end 

ここでは、配列の値をハッシュキーと比較しています。しかし、ハッシュキーは文字列で、配列は整数です。 thatsなぜ私は両方を比較することができません。Haskキーを整数でレールと比較する方法

これに関する解決策はありますか?

+0

あなたのハッシュキーとして文字列(数値)を使用している場合は、その整数値への鍵を変換する** ** key.to_iを使用することができるのに役立ちます。 – dp7

+0

ya ... thats正しい。私は配列の値が整数だけだと思った。だから私は整数に変換しませんでした。私は間違いをしました – BalajiB

答えて

1

質問したい場合は、to_iに電話してください。

params[:mg_question_id].each do |question_id| 

    @poll=MgPollData.build(:mg_question_id => question_id.to_i) 

    params[:options_id].each do |k,v| 

     if k.to_i==question_id.to_i 
     @poll.answer= v 
     end 

    end 

    @poll_answers.save 

エンド

+0

非常に感謝しています.....それは私に多くの時間を節約しました:) – BalajiB

1

他の人はあなたが質問

params[:mg_question_id].each do |question_id| 

    @poll=MgPollData.build(:mg_question_id => question_id.to_i) 

    params[:options_id].each do |k,v| 

     if k.to_i==question_id.to_i 
     @poll.answer= v 
     end 

    end 

    @poll_answers.save 

に.to_i呼び出すことができます示唆したようしかし、それは、配列は、インデックスベースのハッシュを対象基づいていますが0で始まるであることを覚えておくことが重要です、ハッシュキーは多くの場合シンボルです。 key: "Value"、およびキーは、シンボル例えば、以前のRubyのバージョンでエラーまたはをスローすることが.to_iを呼び出す:keyのような予期せぬ副作用が持っている場合:

は、プログラムの特定の実行中にシンボルごとにユニークな整数を返しますが。そのためobject_id

:fred.to_i   #=> 9809 

と同様に、私はそれらの両方が文字列であると整数にシンボルを変換の問題を回避するために持って選ぶというよりも、.to_i.to_sを呼ぶかもしれません。

希望これは、いくつかの...

+0

ありがとう@タイラー。それは本当に意味を作っています – BalajiB

+0

あなたはそれが有用であることを嬉しく思って、あなたのプロジェクトで運が良かった! –

関連する問題