Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.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 AJAX实时搜索_Javascript_Ruby On Rails_Ruby_Ajax_Ruby On Rails 3 - Fatal编程技术网

Javascript 使用助手方法的Rails AJAX实时搜索

Javascript 使用助手方法的Rails AJAX实时搜索,javascript,ruby-on-rails,ruby,ajax,ruby-on-rails-3,Javascript,Ruby On Rails,Ruby,Ajax,Ruby On Rails 3,我正在尝试复制Spotify搜索,它会在每次按键时更新搜索结果。它目前的工作提交,但在按键,我得到了一个坏的请求错误在我的控制台。如何在按键时更新页面?一点背景信息:我在一个助手方法中使用rspotifgem,该方法在搜索条目时调用 static_controller.rb: class StaticController < ApplicationController include ApplicationHelper def home end def search

我正在尝试复制Spotify搜索,它会在每次按键时更新搜索结果。它目前的工作提交,但在按键,我得到了一个坏的请求错误在我的控制台。如何在按键时更新页面?一点背景信息:我在一个助手方法中使用rspotifgem,该方法在搜索条目时调用

static_controller.rb:

class StaticController < ApplicationController
  include ApplicationHelper

  def home
  end

  def search
    @search = user_search(params[:query])

    render :home

  end
end
home.html.erb:

<%= form_tag search_path, method: :get, :id => "search" do %>
    <%= text_field_tag :query %>
    <%= submit_tag 'Search' %>
<% end %>

<% if params.include?(:query) %>
    <div id="music"><%= render 'music' %></div>
<% end %>
<h1>Artists</h1>
<div class="ui cards">
    <% @search["artist"].each do |artist| %>
      <div class="card">
        <!-- Artist image should go here -->
        <div class="content">
          <a class="header"><%= artist.name %></a>
        </div>
      </div>
    <% end %>
</div>

<h1>Albums</h1>
<div class="ui cards">
<% @search["album"].each do |album| %>
  <div class="card">
    <a class="image">
      <img src="<%= album.images.first["url"] %>">
    </a>
    <div class="content">
      <a class="header"><%= album.name %></a>
    </div>
  </div>
<% end %>
</div>

<h1>Songs</h1>
<% @search["tracks"].each do |song| %>
    <div class="ui list">
      <div class="item">
        <img class="ui avatar image" src="<%= song.album.images.first["url"] %>">
        <div class="content">
          <a class="header"><%= song.name %></a>
          <div class="description"><%= song.album.name %></div>
        </div>
      </div>
    </div>
<% end %>

在你的application.js中,
$(“search”)
不应该是
$(“#search”)
?你能检查为“search_path”@AnantKolvankar search#path生成的路由到静态搜索吗?静态搜索会以静态方式呈现结果#home@NitishParkar是的,我想应该。我刚刚更改了它,但结果相同。那么home.js.erb中的内容是什么?
<h1>Artists</h1>
<div class="ui cards">
    <% @search["artist"].each do |artist| %>
      <div class="card">
        <!-- Artist image should go here -->
        <div class="content">
          <a class="header"><%= artist.name %></a>
        </div>
      </div>
    <% end %>
</div>

<h1>Albums</h1>
<div class="ui cards">
<% @search["album"].each do |album| %>
  <div class="card">
    <a class="image">
      <img src="<%= album.images.first["url"] %>">
    </a>
    <div class="content">
      <a class="header"><%= album.name %></a>
    </div>
  </div>
<% end %>
</div>

<h1>Songs</h1>
<% @search["tracks"].each do |song| %>
    <div class="ui list">
      <div class="item">
        <img class="ui avatar image" src="<%= song.album.images.first["url"] %>">
        <div class="content">
          <a class="header"><%= song.name %></a>
          <div class="description"><%= song.album.name %></div>
        </div>
      </div>
    </div>
<% end %>
$("#music").html("<%= escape_javascript(render("music")) %>")
$(function() {
  $("#search input").keyup(function() {
    $.get($("search").attr("action", $("#search").serialize(), null, "script"));
    return false;
  });
});