2012-03-09 107 views
7

我正在使用Rails 3.1製作一個簡單的Intranet應用程序。Rails 3下拉選擇框?

我有一個鏈接一個模型,它具有以下字段:

name:string 
url:string 
colour:string 

我已經把顏色屬性轉換爲類的觀點,就像這樣:

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

目前在新的鏈接形式我只是有一個簡單的表單輸入,用戶可以在其中鍵入任何內容,它將按預期成爲href類。

我想要做的是創建預設選項的下拉列表,這些選項只是簡單的紅色,綠色和藍色(作爲示例)。由於這看起來相當簡單,我認爲不需要幫手。

我已經閱讀了其他幾個關於SO的問題和答案,他們似乎展示了您的名字後面帶有ID號碼的示例。我只是想要下面的代碼:

<select name="colour"> 
<option value="red">Red</option> 
<option value="green">Green</option> 
<option value="blue">Blue</option> 
</select> 

我敢肯定這很簡單,但我不能得到我的頭。我讀過Rails API信息,而select_for_tag讓我感到困惑!

回答

13

只需使用標準選擇元素在你的形式來設置顏色變量:

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

完美,就是我想要的。謝謝! – dannymcc 2012-03-09 12:29:43

4

如果顏色是型號爲你的顏色和F的名稱是表單生成器對象:

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

這將是獲得與色彩的URL作爲值選擇最簡單,最直接的方法和文字的名字。如果您想同時使用該值和文本的名稱,則可以將url:更改爲:name。

此外,對於語義,您可能還想在控制器中設置@colours集合並使用它,而不是從視圖調用模型(以替換Colour.all)。

更新:根據下面的,如果你不具備收集的模型,只是想死您的選擇和值,試試你的評論:

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

這是什麼困惑我。沒有設置顏色選擇。我想將它們編碼到表單中。 – dannymcc 2012-03-09 11:03:10

+0

哦,好的,我會更新答案。對不起,我誤解了。 – miked 2012-03-09 11:11:56

3

您要使用的軌道幫手,因爲那時rails會負責將數據轉移到您的模型中。所以你很可能想要像下面這樣的東西。

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

This Page可能有點羅嗦,但是它可以幫助你是如何考慮這個問題。