2011-12-06 35 views
4

我希望用戶爲一個模型選擇三個選項之一。Rails單選按鈕 - 模型中有多個列的選項

I.e.我有一個模型視頻,可以被評爲正面/負面/未知

目前我有三列布爾值(pos/neg/unknown)。

這是處理這種情況的最好方法嗎?

該表格應該是什麼樣子的?

目前我有類似

<%= radio_button_tag :positive, @word.positive, false %> 
<%= label_tag :positive, 'Positive' %> 
<%= radio_button_tag :negative, @word.negative, false %> 
<%= label_tag :negative, 'Positive' %> 
<%= radio_button_tag :unknown, @word.unknown, false %> 
<%= label_tag :unknown, 'Positive' %> 

但很明顯它允許進行多項選擇,而我試圖限制它只是一個..

怎麼辦?

回答

8

如果將與字符串列一起讓我們說rating

然後在您的形式:

# ... 
<%= f.radio_button :rating, 'unknown', checked: true %> 
<%= f.radio_button :rating, 'positive' %> 
<%= f.radio_button :rating, 'negative' %> 
# ... 

只允許一個選擇

編輯完全相同的,但使用radio_button_tag:

<%= radio_button_tag 'rating', 'unknown', true %> 
<%= radio_button_tag 'rating', 'positive' %> 
<%= radio_button_tag 'rating', 'negative' %> 
+0

我確實做到了(改列字符串)並把該表單,我得到這個錯誤:未定義的方法'積極?'爲# Stpn

+0

<<大聲笑,這是從另一個角度.. – Stpn

1

我認爲你需要水木清華這樣的:

<%= radio_button_tag :rating, 'positive', @word.rating == :positive %> 
<%= label_tag :positive, 'Positive' %> 
<%= radio_button_tag :rating, 'negative', @word.rating == :negative %> 
<%= label_tag :negative, 'Positive' %> 
<%= radio_button_tag :rating, 'unknown', @word.rating == :unknown %> 
<%= label_tag :unknown, 'Positive' %> 

這裏所有單選按鈕將具有相同的屬性name(即'rating'),但有不同的value屬性('positive', 'negative' and 'unknown'分別)。在最後一個參數中,您通過truefalse將其中一個標記爲已選中。