我正在使用simple_form。我怎樣纔能有一個選擇菜單和文本輸入,並有類似Select or add another
。從下拉菜單中選擇或添加另一個
該應用只會從選擇菜單或文本輸入中獲取一個值。
爲了避免用戶混淆,驗證其中一個或另一個而不是兩個也是很好的。
我正在使用simple_form。我怎樣纔能有一個選擇菜單和文本輸入,並有類似Select or add another
。從下拉菜單中選擇或添加另一個
該應用只會從選擇菜單或文本輸入中獲取一個值。
爲了避免用戶混淆,驗證其中一個或另一個而不是兩個也是很好的。
實現所謂的「組合框」你simple_form
jQuery用戶界面有一個下拉框: http://jqueryui.com/autocomplete/#combobox
東西票友: http://demos.kendoui.com/web/combobox/index.html
這將讓你至於你的組合框顯示。我認爲沒有用於驗證的插件,因此您必須自己編寫代碼。
您可以嘗試使用JavaScript和Ruby的組合來解決此問題。如果用戶想輸入一個不同的值,那麼什麼是在下拉菜單中可用,你應該有JS聽在輸入keydown事件並清除下拉菜單,即:
$(".input_field").bind('keydown', function() {
$(".select_field").val('0') // this should be a default blank value
});
這將清除選擇,當用戶類型。同樣,你想在用戶從下拉列表中選擇時清除輸入,對嗎?
$(".select_field").change(function() {
// Let's only clear the input field if the value is not the default null value
if ($(this).val() != 0) {
$(".input_field").val('');
}
});
這將處理前端交互。在控制器中,你會想要做一些額外的邏輯:
def create
object.new(...)
if params[:select] and params[:input]
# Overwrite the select with the input value
object.attribute = params[:input]
end
object.save
end
我認爲你要輸入值,以取代選擇,因此,如果他們最提交,我們就可以覆蓋與選擇值輸入值,然後繼續保存該對象。
這是你在找什麼?不知道輸入的值是否設想創建一個具有關係的新對象。希望這可以幫助。
爲了說明問題,您需要一個用現有值填充的選擇菜單進行選擇,還有一個用於添加未在選擇菜單中列出的值的文本輸入。正確?用一個提交按鈕? – Substantial 2013-04-10 22:26:42
正確。如果文本輸入中有值,應用程序將使用該值。如果選擇菜單上有值,應用程序將使用該值。如果文本輸入和選擇菜單上有值,則會彈出驗證錯誤。 – leonel 2013-04-11 15:08:20