2015-07-29 6 views
1

Я использую Rails 4.2.1 и 2.1.6 рубинRails - Сочетание раскрывающегося и Free-Text-Input

Я ищу решение сделать следующее:
Есть выпадающий список, содержащий список существующих регионах (Бундесланд). Если я найду свой регион в этом списке, выберите из раскрывающегося списка, и я в порядке.
Если я не нашел свой регион, мне нужно вручную ввести новый регион в текстовое поле. Это также создаст новую запись в базе данных.
Чтобы этот пользователь был дружественным и простым в использовании без переключения между полями, я предпочитаю иметь это в одном поле, если это возможно.

Вот код для моего фактического выпадающего списка, но без каких-либо опций для текстовых и ручных ввода.

<br> 
= ai3.input :area_id, label: "Bundesland/Kanton", :as => :select, :collection => option_groups_from_collection_for_select(@area_countries_dach, :area_regions, :name, :id, :name) 

Теперь это должно быть расширено до комбинации выбора коробки (выпадающего) и поле ввода свободного текста.

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

Любые идеи о том, как решить эту проблему? Спасибо.

ответ

0

Вы можете вручную иметь text_field появляются при щелчке по ссылке/кнопке/div если область не найден в drop-down.

Что-то, как показано ниже

<div id="show_region" class="btn btn-primary">Cant Find Your Region? Manually Add It Here</div> 
<%= ai3.input :some_attribute, :class => 'form-control', :id => 'input_region', placeholder: 'Enter your region' %> 

Javacsript

<script type="text/javascript"> 
$('#input_region').hide(); 
$(document).ready(function() { 
    $('#show_region').click(function() { 
    $('#input_region').slideToggle("slow"); 
    }); 
}); 
</script> 

Но вы не может сохранить его в одном атрибуте AFAIK. Вы должны иметь другой атрибут для text_field.

Было бы здорово, если бы пользователь напечатал в поле начало символы для региона. если он найден, выберите щелчком или оставить поле

Это нуждается в автозаполненияtext_field вместо нормального text_field. Посмотрите here о том, как его реализовать.

+0

Спасибо Pavan. Я сейчас тестирую и играю с «автозаполнением». – Cokiehh

+0

Спасибо, Паван. Мне нужно сделать это немного сложнее. Я не использую (и не сохраняю) текст региона (например, Шлезвиг-Гольштейн), вместо этого я использую ключ (НЕ: id, но уникальный конкретный ключ, такой как SH). Оба значения хранятся в таблице в моем db. И иногда мои значения хранятся в массиве хэшей (fe {[«Doktor», «Dok»], [«Professor», «Prof»]}. Я могу понять, что использовать ключ вместо полнофункционального, текст Также мне нужно изменить стиль нового поля автозаполнения обратно на «стандартное» поле ввода, так что он имеет тот же внешний вид. Еще раз спасибо – Cokiehh

+0

@Cokiehh Если вы найдете мой ответ полезным, дайте это знак, чтобы принять его :) – Pavan

0

Как отметил Паван, текстовое поле автозаполнения хорошо работает в этой ситуации. Я наткнулся на то же самое в последнее время и использовал для этого twitter typeahead.
https://github.com/yourabi/twitter-typeahead-rails

Существует много дискуссий по этому вопросу в другом месте.