2013-04-10 2 views
1

Я использую simple_form. Как я могу выбрать меню выбора и текстовый ввод и что-то вроде Select or add another.Выберите из выпадающего меню или добавьте еще

Приложение будет принимать только одно значение: из меню выбора или ввода текста.

Было бы также полезно подтвердить, что у вас есть тот или иной, но не оба, чтобы избежать путаницы пользователей.

+0

Чтобы уточнить, вы хотите, чтобы меню выбора было заполнено существующими значениями, и текстовый ввод для добавления значения, не указанного в меню выбора. Верный? С помощью одной кнопки отправки? – Substantial

+0

правильный. если на ввод текста есть значение, приложение будет использовать это значение. если в меню выбора есть значение, приложение будет использовать его. если в текстовом вводе и в меню выбора есть значение, должна появиться ошибка проверки. – leonel

ответ

1

Реализовать то, что называется 'выпадающий' к вашему simple_form

Jquery UI имеет выпадающий: http://jqueryui.com/autocomplete/#combobox

что-то любителю: http://demos.kendoui.com/web/combobox/index.html

Это поможет вам, насколько ваши комбо-боксов отображение. Я не думаю, что есть плагин для проверки, поэтому вам придется писать код самостоятельно.

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 

я предполагаю, что вы хотите, чтобы входное значение вытеснять избранное, поэтому если они наиболее представлены, мы можем просто перезаписать выберите значение с введите значение, а затем продолжите сохранение объекта.

Это вы что искали? Не уверен, что введенное значение предполагало создать новый объект с отношением или нет. Надеюсь это поможет.

Смежные вопросы