我有一個Attendance
模型,它有兩個Boolean
數據庫屬性(:late
和:absent
),它們都有:default => false
。兩個布爾數據庫屬性的導軌單選按鈕
我想製作一個只有2個單選按鈕的窗體。一個爲遲,一個爲缺席。當然,用戶只能選擇其中的一個。
我試過這麼多的變化,但不能得到任何工作。
任何人都可以借我一把嗎?我知道我可以很容易地做集合選擇,但單選按鈕將有助於用戶體驗。另外,由於一系列原因,我需要保留db數據模式...
感謝百萬!!!
我有一個Attendance
模型,它有兩個Boolean
數據庫屬性(:late
和:absent
),它們都有:default => false
。兩個布爾數據庫屬性的導軌單選按鈕
我想製作一個只有2個單選按鈕的窗體。一個爲遲,一個爲缺席。當然,用戶只能選擇其中的一個。
我試過這麼多的變化,但不能得到任何工作。
任何人都可以借我一把嗎?我知道我可以很容易地做集合選擇,但單選按鈕將有助於用戶體驗。另外,由於一系列原因,我需要保留db數據模式...
感謝百萬!!!
我不知道任何扶助助手將支持所需的福開箱即用。我也質疑可用性,因爲如果模型既不遲到也不缺失,但用戶無法取消選擇單選按鈕,但意外點擊。除此之外,我會使用radio_button_tag並提供兩個選項,然後在您的控制器中相應地更新參數。這裏有一個簡單的例子:
<%= form_tag('/your/path') do %>
<%= radio_button_tag :status, 'late' %>
<%= label_tag :status_late, 'Late' %>
<%= radio_button_tag :status, 'absent' %>
<%= label_tag :status_absent, 'Absent' %>
<%= submit_tag :submit %>
<% end %>
當然,你有你需要的任何其他字段,然後在您的控制器像作者:
def create
case params[:status]
when 'late'
params[:model_name][:late] = true
when 'absent'
params[:model_name][:absent] = true
end
ModelName.new(params[:model_name])
end
東西沿着這些線路應該做的伎倆。
感謝您的迴應!我認爲這是一個好答案。一般的想法是,無論是工人缺席還是遲到。如果用戶被無意中標記爲上述任何一個,模型可以被刪除。 –
@options = ["Late", "Absent"]
@selected_options = ""
與
<% @options.each do |option| %>
<%= radio_button_tag 'attendance_radio', option, option == @selected_option %> <%= label_tag 'name', option %> <br />
<% end %>
如果你想在表單中值比實際選擇的值(晚期,無)以外的內容存儲在attendance_radio
選擇的無線電那麼你可以弄亂第二個參數來保存boolean
而不是
^這不起作用的原因有很多:1)它創建了兩個無關的單選按鈕 - 即用戶可以選擇兩個選項,2)提交的值分別遲到和不存在,而不是真正的/ false,如問題所示。 –
編輯答案。對不起,我在飛行中回答。 –
非常感謝編輯回覆!我會鼓勵你的建議,並嘗試使其工作。 –
在上面的第一個答案中,編輯這樣的參數不是最佳做法。我將通過爲布爾值創建隱藏字段來處理此問題,並根據使用Javascript選擇哪個單選按鈕來相應地設置它們的值。
我沒有足夠的知名度來評論,所以創建了一個新的答案。
(if $('#id_of_radio_button').is(:checked)) {
$('#id_of_hidden_tag:hidden').val(true);
}
然後你可以像通常那樣將它作爲一個參數傳遞,而沒有控制器中所有額外的重量。
你是說你想讓用戶能夠選擇兩者(即將兩者設置爲true)? – veritas1