Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将javascript变量设置为Rails中模型的列表?_Javascript_Ruby On Rails_Jquery Ui - Fatal编程技术网

如何将javascript变量设置为Rails中模型的列表?

如何将javascript变量设置为Rails中模型的列表?,javascript,ruby-on-rails,jquery-ui,Javascript,Ruby On Rails,Jquery Ui,我有一个rails应用程序,其中我有一个Post模型,我使用acts\u as\u taggable\u ongem作为标记功能。我正在处理自动完成标记建议,并希望从我的Post模型中为列表设置一个javascript变量。我正在使用jqueryuiautocomplete来实现自动完成功能 这是我的\u form.html.erb,其中有一个表单字段,用于接受特定帖子的标记 <%= form_for Post.new do |f| %> <div class="form-

我有一个rails应用程序,其中我有一个
Post
模型,我使用
acts\u as\u taggable\u on
gem作为标记功能。我正在处理自动完成标记建议,并希望从我的
Post
模型中为列表设置一个javascript变量。我正在使用
jqueryui
autocomplete来实现自动完成功能

这是我的
\u form.html.erb
,其中有一个表单字段,用于接受特定帖子的
标记

<%= form_for Post.new do |f| %>


<div class="form-group">
    <%= f.label :message, "Post Your Thoughts:", class: "col-md-4 control-label message-label" %>

      <%= f.text_area :message, class: "form-control" , rows: "7" %>

  </div>

  <div class="form-group">
    <%= f.label :tag_list, "Tags:", class: "col-md-4 control-label message-label" %>

      <%= f.text_field :tag_list, class: "form-control", placeholder: "Enter tags separated by Comma"  %>


  </div>

  <%= f.submit "Submit Post" , class: "btn btn-info" %>
使用从服务器获取标记列表


现在我的问题是,考虑到目前为止我在使用Ajax和获取标记列表方面遇到了麻烦,这种获取标记列表的方法有什么问题吗

尝试获取哈希中的标记列表,如下所示:

var availableTags = "<%== Hash[tags].to_json %>"
var availableTags=“”

在这种情况下,我建议使用更干净的溶液。如果您的标记达到几千个条目,它总是加载到您的html结果中,我发现在性能和带宽方面,这是一个糟糕的解决方案(即使这显然是可缓存的,也不使用缓存)。您应该通过AJAX加载它,或者使用在Rails和JS之间提供交换的gem,如:

例如,您可以这样使用Gon:

在控制器中:

gon.available_tags = tags
在jQuery UI脚本中:

var availableTags = gon.available_tags

还有一个RailsCast:

嗨,谢谢你的回答,你的解决方案很有效!!但是正如@wiesion所建议的,我正在尝试向它添加ajax功能。
gon.available_tags = tags
var availableTags = gon.available_tags