2016-05-10 6 views
1

RailsGuidesを次のように保存され、私はこのような形でドロップダウンを作成しています:私のショーのページで表示テキスト値が整数

<option value="1">Lisbon</option> 
<option value="2">Madrid</option> 

:のようなドロップダウンリストを作成する

[['Lisbon', 1], ['Madrid', 2], ...] 

を整数(2)の代わりに私の保存された値のテキスト(Madrid)を表示したいと思います。

値はデータベースに格納されます。これはライブシステムです。つまり、保存されたコンテンツを変更することはできません(できますが、できないことを希望します)。

私はハッシュからドロップダウンリストを作成することをお勧めしますが、これはRailsGuideの推奨フォーマットであるため、これを行うことができるinbuiltヘルパーがあると仮定します。私はドロップダウンリストを文字列として保存する方が簡単ですが、データベース内には多くのスペースが必要です。

値が0から始まらないため、インデックスを使用できません。順序が正しくない可能性があります。私はこの2次元配列で検索を書くことができますが、簡単な方法がありますか?誰かがこれを解決する最も簡単な方法を知っていますか?あなたが表示値にデータベースの値から直接マッピングとの選択をしている、とあなたは一貫して、プレゼンテーションの表示値を使用したい、このような状況では、

+0

次のコードは私のために働きます。<%= select_tag:city、options_for_select([['Lisbon'、1]、['Madrid'、2]])%> ' – retgoat

+0

私が望むのはビューページです2が格納されている場合は文字列 "Madrid"。 – hook38

答えて

1

、私はこのアプローチを使用します。

あなたにモデル、マッピング関係を持つ配列を宣言:あなたの編集ビュー(フォーム)で

class Person 

    GENDER = [ 
    ["Male", "m"], 
    ["Female", "f"] 
    ] 

end 

を、あなたがこのアプローチを使用して選択を作成することができます。

<%= f.select :gender, Person::GENDER %> 

ショービューでは、このフォーマットを使用して表示することができます。

<%= Person::GENDER.find {|item| item[1] == @person.gender }[0] %> 

このアプローチはあなたの選択の項目の表示順序を制御し、まだ合理的に簡単に表示値をレンダリングすることができるようにする機能を提供します。

+0

ok ...それは簡単です。私はRailsにこれをやるヘルパーがいると思っていましたが。ありがとうございました! – hook38

+0

もしそうなら、私はそれを見つけられませんでした。しかし、もう一度、私はこれを何年も働かせて以来、より良い選択肢を見ていない。楽しい! –

関連する問題