2012-02-19 9 views
4

I持って私のモデルでは、以下:ヒト化は、レール選択ヘルパー

PRODUCTSTATES = %w[published coming_soon in_development cancelled] 

私は、フォームのドロップダウンを移入することを利用している、と私は、リストの外観を作るためにhumanizeを使用しようとしていますかなり、しかしそれを得るように見えることはできません。

<%= f.select :status, Product::PRODUCTSTATES %> 

Product::PRODUCTSTATES.humanizeは明らかに動作しません、また手の前に文字列に変換しません。

答えて

9

あなたは

[['caption1', 'value1'], ['caption2', 'value2']] 

selectにヘルパーのような配列を渡すことができますし、それはあなたがそのように行うことができますあなたのケースでは

<select> 
    <option value="value1">caption1</option> 
    <option value="value2">caption2</option> 
</select> 

のようになめらかに生成されます:

<%= f.select :status, Product::PRODUCTSTATES.map { |s| [s.humanize, s] } %> 

ページに表示される状態の人間化バージョンを取得し、元の(人間化されていない)バージョンはフォームが送信されたときにサーバーに送信されます。

詳細については、selectおよびoptions_for_selectを参照してください。

+0

ありがとうございます、<%= f.input:status、collection:Product :: PRODUCTSTATES.map {| s | [s.humanize、s]}%>for simple_form_for sbdyが必要な場合に備えて –

関連する問題