JQuery UI Автозаполнение с источником данных JSON, сгенерированным из Rails - не работает - PullRequest
3 голосов
/ 27 сентября 2010

Я пытаюсь настроить тег ввода с помощью функции автозаполнения jquery, но он не работает, когда я ссылаюсь на внешние данные JSON.Однако он отлично работает с локальным JSON-подобным массивом ... Позвольте мне объяснить это в моем коде:

HTML-файл:

<html>
<head>
 <meta charset="utf-8">

 <script src="jquery-1.4.2.min.js" type="text/javascript"></script> 
 <script src="jquery-ui-1.8.5.custom.min.js" type="text/javascript"></script> 
 <script>
  $(function() {
   $("#birds").autocomplete({
    source: "http://localhost:3000/autocomplete_searches/index.json",
    minLength: 3
   });
  });
 </script>
</head>


<body>
 <div class="ui-widget">
  <label for="birds">Birds: </label>
  <input id="birds" />
 </div>
</body>
</html>

autocomplete_searches_controller.rb в моем приложении Rails

class AutocompleteSearchesController < ApplicationController

 def index
  @tags = Tag.limit(30).name_like(params[:term])
  @tags_hash = []
  @tags.each do |tag|
   @tags_hash << {"label" => tag.label}
  end
  render :json => @tags_hash
 end

end

Одно только это действие JSON работает очень хорошо, например: http://localhost:3000/autocomplete_searches/index?term=psychiatric дает мне:

[{"label":"Psychiatric Hospital"},{"label":"Psychiatric Nurse"},{"label":"Psychiatric Examination"}]

И я вижу, что моя функция jQuery также работает как-то, потому чтокогда я набираю, например, «италия» в моем поле ввода #birds, WEBrick дает мне:

Started GET "/autocomplete_searches/index.json?term=italy" for 127.0.0.1 at 2010-09-27 18:07:07 +0200
  Processing by AutocompleteSearchesController#index as JSON
  Parameteres: {"term"=>"italy"}
  bla bla bla SELECT "tags".* FROM "tags" WHERE (tags.name LIKE '%italy%') LIMIT 30

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

<html>
<head>
 <meta charset="utf-8">

 <script src="jquery-1.4.2.min.js" type="text/javascript"></script> 
 <script src="jquery-ui-1.8.5.custom.min.js" type="text/javascript"></script> 
 <script>
  $(function() {
   $("#birds").autocomplete({
    source: [{"label":"Psychiatric Hospital"},{"label":"Psychiatric Nurse"},{"label":"Psychiatric Examination"}],
    minLength: 3
   });
  });
 </script>
</head>


<body>
 <div class="ui-widget">
  <label for="birds">Birds: </label>
  <input id="birds" />
 </div>
</body>
</html>

Так в чем же проблема?Я новичок в JSON, так что, возможно, я делаю что-то не так.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2011

Это немного в темноте, но вы используете плагин jQuery Validator? У меня были небольшие проблемы с тем, что это мешало моим действиям AJAX в его последней версии.

0 голосов
/ 27 сентября 2010

Э-э ... Я сделал новое действие в Rails и поместил этот HTML-код в качестве представления.Это начало работать.Но почему я не смог заставить его работать, пока он был отдельным html-файлом?

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