1

我正在使用 JQuery 和 Rails 开发一个自动完成表单。但是我不知道如何将值从我的数据库中提取到 JQuery(我相信这必须通过 Rails 完成)。

这是我在 jQuery 中的自动完成功能

<script>
  $(document).ready(function() {
    $( "#BOOKSEARCH" ).autocomplete({
        source: programmingLang
    });
});
var programmingLang = ["ActionScript","AppleScript","Asp","BASIC","C","C++",
    "Clojure","COBOL","ColdFusion","Erlang","Fortran","Groovy","Haskell",
    "Java","JavaScript","Lisp","Perl","PHP","Python","Ruby","Scala","Scheme"];
</script>

然而,目前自动完成从硬编码数组中填充。如何用 Rails 中的数据值填充这个数组?

谢谢

4

3 回答 3

2

试试这个:

   var programmingLang = <%= Language.all.map(&:name).to_json.html_safe %>;

假设您有一个具有名称列的模型语言

确保您没有数千个或记录,因为这会减慢甚至可能引发超时错误。在这种情况下,您应该使用 ajax。有几个答案可以解释 ajax 的事情。

或者

 var programmingLang = <%= ruby_array.to_json.html_safe %>;
于 2012-06-02T21:41:30.117 回答
0

您可以通过对返回此数组的操作的简单 AJAX 请求来做到这一点:

$(document).ready(function() {
  $.get('path-to-json', function(data){
    $( "#BOOKSEARCH" ).autocomplete({
      source: data
    });
});
于 2012-06-02T21:41:16.230 回答
0

您的 Rails 控制器需要返回一个包含这些值的数组(或 json 对象,取决于您的 js 要求)。
您可以通过简单的ajax调用调用此控制器来检索数据。
一旦你有了数据,你就可以用同样的方式填充它。您可以在此处
找到有关 rails ajax 的更多信息。

于 2012-06-02T21:43:02.527 回答