RoR live-search (text_field_with_auto_complete) отправить - PullRequest
4 голосов
/ 10 февраля 2010

У меня есть таблица "Фильмы" и "Актеры", а также "Скиты" в качестве модели соединения. Чтобы быть более конкретным, "Casts" имеет movie_id, actor_id и rolename. Я хочу, чтобы в форме «Фильмы» был добавлен живой поиск для поиска по актерам и текстовое поле «rolename» и сохранить их в «Кастах». Я не знаю, является ли text_field_with_auto_complete правильным выбором, но я предпочитаю не использовать много JavaScript, потому что я не знаком с ним. Я искал по всему интернету, чтобы найти что-то похожее на это без какого-либо результата. Мне удалось заставить его работать с "@ctors.each do", но это очень длинный список.

Ответы [ 2 ]

2 голосов
/ 14 марта 2010

Это не плагин, но с небольшой магией jQuery, вы можете использовать http://github.com/chadisfaction/jQuery-Tokenizing-Autocomplete-Plugin. Приятная вещь в этом заключается в том, что, поскольку он является чистым JS в своей реализации, вы можете создать вызов AJAX самостоятельно в Рельсы и отображают только то, что вы хотите. Он даже позволяет вам добавить таблицу стилей в выпадающий список, если вы хотите сделать ее более похожей на Facebook. В вашем контроллере добавьте функцию, чтобы вызов AJAX возвращал список строк в JSON:

  def taglist
    tags = []
    sql = "SELECT id,name ... LIMIT 15" # Enter SQL here to produce a possible result set
    result = ActiveRecord::Base.connection.execute(sql)
    # Iterate over the hash values and push them into an array
    result.each { |field| tags.push( {"id" => field[0], "name" => field[1]} ) }
    result.free
    render :json => tags, :layout => false
  end

В представлении добавьте следующий код:

<%= javascript_include_tag 'jquery.tokeninput' %>
<%= stylesheet_link_tag 'token-input-facebook' %>
<script type="text/javascript">
jQuery(document).ready(function () {
  jQuery("#actors_role").tokenInput("/actors/rolesearch", {
        allowNewValues: false,
        canCreate: false,
        hintText: "Enter the actor's name or role they played",
  });
});
</script>
0 голосов
/ 11 февраля 2010

См. text_field_with_auto_complete внутри form_for

В действии контроллера auto_complete убедитесь, что ваш SQL-запрос ограничивает имена актеров с помощью переданного параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...