2012-03-09 6 views
7

私はRails 3.1で作られた簡単なイントラネットアプリケーションを開発中です。Rails 3ドロップダウン・セレクト・ボックス?

私は、次のフィールドを持っているリンクのためのモデルがあります:

name:string 
url:string 
colour:string 

私はそうのように、ビューのクラスにカラー属性を入れている:に現時点で

<a href="linkaddress" class="<%= link.colour %>">Link Name</a> 

を新しいリンクフォーム私はちょうどユーザーが何かを入力することができ、期待どおりhrefクラスになる単純なフォーム入力を持っています。

私がしたいのは、プリセットオプションのドロップダウンリストを作成することです。これらのオプションは赤、緑、青(例として)です。これはかなり簡単なので、私はヘルパーの必要はないと思います。

私はSOに関する他のいくつかの質問と回答を読んでいます。名前の後にID番号が続く例を示すようです。私はちょうど以下のコードを持っています:

私はこれは単純だと確信していますが、私はそれの周りに私の頭を得ることはできません。私はRailsのAPI情報を読んだので、select_for_tagが私を混乱させました!

答えて

13

ちょうど色の変数を設定するために、フォームに標準のselect要素を使用します。色の選択はありません。私はそれらをフォームにハードコードしたいと思います。
+0

完璧な、ちょうど私が欲しかった。ありがとう! – dannymcc

4

色があなたの色とfに対するモデルの名前は、フォームビルダオブジェクトです:

<%= f.collection_select :colour, Colour.all, :url, :name %> 

これは値として色のURLで選択を取得するための最も単純で簡単な方法だろうテキストとしての名前。値とテキストの両方の名前が必要な場合は、url to:nameも変更できます。

さらに、セマンティクスのために、@ colour.allを置き換えるために、ビューからモデルを呼び出すのではなく、コントローラに@coloursコレクションを設定して使用することもできます。

UPDATE:あなたは、コレクションのためのモデルを持っているし、単にあなたの選択と値をハードコーディングしたくない場合は、試してみて、下記のコメントに基づいて:あなたはレールのヘルパーを使用したい

<%= select :your_obj, :linkaddress, [["Red","red"],["Green", "green"],["Blue", "blue"]] %> 
+0

: – dannymcc

+0

ああ、大丈夫、答えを更新します。申し訳ありませんが、私は誤解しました。 – miked

3

、これは、レールがデータをモデルに移動させるためです。あなたはおそらく次のようなものがほしいと思うでしょう。

<%= f.select :colour, ["red","green","blue"] %> 

This Pageは少し長ったらしいすることができますが、それはあなたがそれについて考えているかに役立つかもしれません。私を混乱させているものだ

<%= f.select :colour, options_for_select([["Red", "red"], ["Green", "green"]], @link.colour) %>