2011-11-08 9 views
0

私はこのハッシュ定数持っている:私はまさにそれが書かれているために、オプションとしてRailsのフォームで使用したいRailsはオプションリストをどのように作成しますか?

EMPLOYEE_NUM_OPTIONS = { 
    'Please, select' => '', 
    '10-50' => '10-50', 
    '51-100' => '51-100', 
    '101-500' => '101-500', 
    '501-1999' => '501-1999', 
    '+2000' => '2000', 

}

を。

<%= pf.select(:employee_num, GroupProfile::EMPLOYEE_NUM_OPTIONS.sort)%> 

は、予期しない結果をもたらします。

ありがとうございました。

答えて

1

ハッシュでsortを呼び出すと、効果的にハッシュをキー/値の配列の配列に変換し、Array#<=>を使用して並べ替えると、注文が破棄されます。 options_for_selectを経て終了する必要がありpf.selectにどのようなあなたの手:

は、コンテナ(ハッシュ、配列、列挙、あなたのタイプ)を受け入れ、オプションタグの文字列を返します。要素が最初と最後に応答するコンテナ(2要素配列など)が与えられた場合、 "lasts"はオプション値として、 "firsts"はオプションテキストとして機能します。 ハッシュはこのフォームに自動的に変換されるため、キーは「ファースト」になり、値は最後になります。

強調鉱山。

EMPLOYEE_NUM_OPTIONS = [ 
    [ 'Please, select', '' ], 
    [ '10-50','10-50' ], 
    [ '51-100', '51-100' ], 
    [ '101-500', '101-500' ], 
    [ '501-1999', '501-1999' ], 
    [ '+2000', '2000' ] 
] 

へ:

<%= pf.select(:employee_num, GroupProfile::EMPLOYEE_NUM_OPTIONS) %> 

をあなたが1.8にいるなら、あなたは、アレイのサブアレイにEMPLOYEE_NUM_OPTIONSを変更することができます。だから、あなたはRuby 1.9のを使用している場合はこれを言うことができるはずです注文を受け取り、pf.selectに手渡してください。また、ハッシュフォームが必要な場合:

EMPLOYEE_NUM_OPTIONS_HASH = Hash[EMPLOYEE_NUM_OPTIONS] 

このトリックを行う必要があります。

また、1.9を使用している場合は、ハッシュを既に注文しているので、この余分な作業はすべて必要ありません。

+0

ありがとうございます。今私はここにフードの下にあるものを理解し、将来混乱しないようにしてください。乾杯!私はruby 1.8を使用しています。 – Yulia

関連する問題