如何在导航栏搜索表单中使用Ransack?

时间:2018-09-24 10:25:34

标签: ruby-on-rails ransack

我正在使用带有Rails 5的Ransack来按其描述搜索图库中的图像。搜索表单位于导航栏中,Ransack仅在我显示图片库页面时为我提供结果。当我显示任何其他包含相同导航栏的页面时,搜索不会返回任何结果。

来自_header.html.erb的代码:

<div class="form-group">
  <%= search_form_for @q, url: search_pins_path, html: { method: :post } do |f| %>
    <%= f.search_field :description_cont, type: "text", class: "form-control", placeholder: "Search" %>

     <%= f.submit 'Search', class:"btn btn-default"%>
   <% end %>
 </div>

application_controller.rb:

class ApplicationController < ActionController::Base
 protect_from_forgery with: :exception

 before_action :set_global_search_variable

 def set_global_search_variable
  @q = Pin.ransack(params[:q])
 end
end

在显示来自同一导航栏的任何其他页面时,如何从Ransack搜索中获得结果?

1 个答案:

答案 0 :(得分:0)

添加到您的路线:

  resources :pins do
   collection do
     match 'search' => 'pins#search', via: [:get, :post], as: :search
   end
 end

在application.controller中:

before_action :set_global_search_variable

def set_global_search_variable
  @q = Pin.search(params[:q])
end

def search
 index
 render :index
end

在引脚控制器中:

  def index
    @pins = @q.result
  end