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