2013-04-10 81 views
1

我正在使用simple_form。我怎樣纔能有一個選擇菜單和文本輸入,並有類似Select or add another從下拉菜單中選擇或添加另一個

該應用只會從選擇菜單或文本輸入中獲取一個值。

爲了避免用戶混淆,驗證其中一個或另一個而不是兩個也是很好的。

+0

爲了說明問題,您需要一個用現有值填充的選擇菜單進行選擇,還有一個用於添加未在選擇菜單中列出的值的文本輸入。正確?用一個提交按鈕? – Substantial 2013-04-10 22:26:42

+0

正確。如果文本輸入中有值,應用程序將使用該值。如果選擇菜單上有值,應用程序將使用該值。如果文本輸入和選擇菜單上有值,則會彈出驗證錯誤。 – leonel 2013-04-11 15:08:20

回答

0

您可以嘗試使用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 

我認爲你要輸入值,以取代選擇,因此,如果他們最提交,我們就可以覆蓋與選擇值輸入值,然後繼續保存該對象。

這是你在找什麼?不知道輸入的值是否設想創建一個具有關係的新對象。希望這可以幫助。

相關問題