2016-11-26 25 views
0

私は、ユーザープロファイルRuby 2次元配列の "キー"にアクセスするには?

SEX = [["Male", 'M'], 
     ["Female", 'F']] 

を更新するときに、私はハッシュを使用したいが、私はそれが選択のものとは全く動作させることができませんでしたf.selectに使用されているような配列を持っています。だから私は "男性"と "女性"の値を持つ選択ドロップダウンを持っており、それは "M"または "F"の値をユーザー変数:sexに割り当てます。プロフィールを表示するとき、私はここで "キー"として性別を出力する必要があります(男性または女性、M/Fではありません)。どのように私はこれらの "キー"値にアクセスすることができますか?巨大なget_sexや他のゲッターをDRYにはならない大きな配列のメソッドにするには?私はここで何ができますか?

答えて

0

options_for_selectヘルパーと一緒にハッシュを使用することを検討してください:

options_for_select({ "Male" => "M", "Female" => "F" }, "M") 

追加のドキュメントがhereを見つけることができます。

+0

どのように私はしかし、既存のハッシュでそれを使用することができますを使用する必要がありますか?私は理解していません –

+0

私はこれを試したが動作しませんでした <%= f.label:sex%> <%= f.options_for_select(User :: SEX.map {| s | [s.key、 s.value]})%> –

+0

["Male"、 "M"]:Arrayの未定義メソッド 'key 'は、今やハッシュですが、奇妙な –

0

わかりやすくするために、ドキュメントhereをお読みください。しかし、パンマリが示したように、それは道のりです。

彼の提案をより柔軟にするために、男性と女性の定数を作成し、それらを選択ヘルパーにハッシュとして渡すことをお勧めします。

+0

私はそれを読んだが、私はまだこれを既存のハッシュで行う方法を理解していない(これを好きなら、options_for_select({"Basic" => "$ 20"、 "Plus" => "$ 40"} )後でキー値にアクセスするにはどうすればいいですか?) –

+0

コントローラの値にアクセスすることができ、短い条件文を書いてキーペアを見つけ出すことができます。 –

関連する問題