Javascript 使用AJAX-Rails加载用户名

Javascript 使用AJAX-Rails加载用户名,javascript,jquery,ruby-on-rails,ruby,ajax,Javascript,Jquery,Ruby On Rails,Ruby,Ajax,我正在使用这个宝石: 在我的控制器内: @usernames = User.pluck(:username).compact 在我看来: <script> data = <%= raw User.pluck(:username).compact %>; $('textarea').atwho({at:"@", 'data':data}); </script> 数据=; $('textarea').atwho({at:“@”,“data”:data}

我正在使用这个宝石:

在我的控制器内:

@usernames = User.pluck(:username).compact
在我看来:

<script>

data = <%= raw User.pluck(:username).compact %>; 
$('textarea').atwho({at:"@", 'data':data});

</script>

数据=;
$('textarea').atwho({at:“@”,“data”:data});

这显然是非常危险的,不是一个好主意。但是对于没有AJAX或Javascript经验的人来说,我如何使用这个gem并通过AJAX高效地调用用户名呢

您可以使用
远程过滤器
回调:

您可以在此处找到更多信息:

谢谢!上面的Javascript/ajax代码段在哪里?当前代码段在哪里。或者在$(function(){})中的application.js中;块关于第二个问题:你应该把它放在索引方法中,我已经编辑了我的答案。对不起,我误解了你所说的。我将代码放在当前脚本的位置,但现在什么也没有发生。$(“#textarea”)-查看“textarea”之前的“#”。这意味着您的textarea应该带有id=“textarea”,或者您希望如何命名它。例如,如果它是$(“#users textarea”)。。。。您应该将textarea的id属性设置为“users textarea”,如下所示:
$('#textarea').atwho({
        at: "@",
        show_the_at: true,
        callbacks: {
            remote_filter: function(query, callback) {
                // Return false on empty query
                if (query.length < 1) {
                    return false
                }
                // AJAX call to http://yoursite/users.json?q=query
                $.getJSON("/users.json", {q: query}, function(data) {
                    callback(data.usernames)
                });
            }
        }
    })
# controllers/users_controller.rb
def index
  respond_to do |format|
   format.json{ render :json => User.where('username like ?', "#{q}%").pluck(:username).compact}
  end
end