ERB 代码在 JavaScript 标签中不起作用<script>



我有一个带有标题和内容属性的Post表。我想使自动完成的文本字段,其中用户建议的帖子标题。我试图在我的rails应用程序中添加jquery自动完成。我是这样做的。

controller (add Posts title in Array)——

  @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>

但是没有显示任何建议(自动完成不工作)。我不知道哪里出了问题。请帮助

你试过这样做吗?

<script>
   var availableTags = <%= raw @posttitle %>;
   $(function() {
        $( "#tags" ).autocomplete({
         source: availableTags
        });
   });
</script>

如果您希望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>

我认为你不应该在javascript中使用ruby数组。它不会作为数组计算。相反,你可以创建javascript数组并使用它作为

<script>
  $(function() {
    var availableTags = new Array();
    <% @posttitle.each do |post| %>
      availableTags.push(<%= post %>);
    <% end %>
    $( "#tags" ).autocomplete({
      source: availableTags
    });
  });
</script>

相关内容

最新更新