我有Post表格,其中包含标题和内容属性。我想制作自动完整的文本字段,其中用户是由帖子标题建议的。我想在我的rails应用程序中添加jquery auto-complete。我这样做..
controller(在数组中添加帖子标题) -
@posttitle = []
Post.all.each do |g|
@posttitle << g.title
end
查看 -
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<%= text_field_tag :search, params[:search], :placeholder => "Search Religious Places...", :id=>"tags" %>
<script>
$(function() {
var availableTags = <%= @posttitle %>;
$( "#tags" ).autocomplete({
source: availableTags
});
});
</script>
但它没有显示任何建议(自动完成不起作用)。我不知道什么是错的。请帮忙
答案 0 :(得分:7)
你有没有试过这样的事情:
<script>
var availableTags = <%= raw @posttitle %>;
$(function() {
$( "#tags" ).autocomplete({
source: availableTags
});
});
</script>
答案 1 :(得分:1)
如果你想让Ruby中的一个项目数组显示为一个javascript数组,你需要:
1)将其放入以逗号分隔的值列表中 2)用引号包装每个值 3)转义值,使引号不会导致javascript错误
如果您只想要标题:
控制器:
@titles = Post.pluck(:title)
然后在你看来:
<script>
$(function() {
var availableTags = [<%= @titles.map{|title| escape_javascript(title)}.join(", ") %>];
$( "#tags" ).autocomplete({
source: availableTags
});
});
</script>
答案 2 :(得分:0)
也许这个railscast可以帮助你
http://railscasts.com/episodes/258-token-fields?view=asciicast
答案 3 :(得分:0)
我认为你不应该在javascript中使用ruby数组。它不会被评估为数组。相反,您可以创建javascript数组并将其用作
<script>
$(function() {
var availableTags = new Array();
<% @posttitle.each do |post| %>
availableTags.push(<%= post %>);
<% end %>
$( "#tags" ).autocomplete({
source: availableTags
});
});
</script>