自动填充的搜索表单并非在所有页面中都有效

时间:2015-12-07 17:39:39

标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-3.2 ruby-on-rails-3.1

当我在某些页面中使用自动填充的搜索表单时,它可以正常工作,但是当我点击导航栏上的“主页”,“帮助”或“用户”链接时,我只能使用没有自动填充功能的搜索表单。

布局/ header.html.erb

  <% if logged_in? %>
    <%= form_tag users_path, class: "navbar-form navbar-left", method: :get do %>
     <% if params[:query].present? %>
        <%= link_to "clear", users_path%>
     <%end%>
      <div class="input-group input-group-md">
         <%= text_field_tag :query, params[:query], class: "form-control",id: "user_search", autocomplete: "off",:placeholder => "Find other users" %>
     </div>
    <button type="submit" class="btn btn-default">Search</button>
  <% end %>
<%end%>

<nav>
  <ul class="nav navbar-nav navbar-right">
    <li><%= link_to "Home", root_path %></li>
    <li><%= link_to "Help", help_path %></li>
    <% if logged_in? %>
      <li><%= link_to "Users", users_path %></li>
      <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">
          Account <b class="caret"></b>
        </a>
        <ul class="dropdown-menu">
          <li><%= link_to "Profile", current_user %></li>
          <li><%= link_to "Settings", edit_user_path(current_user) %></li>
          <li class="divider"></li>
          <li>
            <%= link_to "Log out", logout_path, method: "delete" %>
          </li>
        </ul>
      </li>
    <% else %>
      <li><%= link_to "Log in", login_path %></li>
    <% end %>
  </ul>
  </nav>
 </div>
</header>

用户模型

 searchkick autocomplete: ['name']

users_controller

 def index
  if params[:query].present?
     @users = User.search(params[:query], page: params[:page])
  else
     @users = User.all.page params[:page]
  end
 end

 def autocomplete
     render json: User.search(params[:query], autocomplete: true, limit: 10).map(&:name)
 end

application.html.erb

 <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
 <%= javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.9.3/typeahead.min.js" %>

users.js.coffee

 $ ->
    $('#user_search').typeahead
       name: "user"
       remote: "/users/autocomplete?query=%QUERY"

的routes.rb

 resources :users do
     collection do
        post :import
        get :autocomplete # <= add this line
     end

   root to: 'users#index'

     member do
          get :following, :followers
     end
  end

0 个答案:

没有答案