Как использовать Ransack в форме поиска navbar? - PullRequest
0 голосов
/ 24 сентября 2018

Я использую Ransack with Rails 5 для поиска изображений в галерее по их описаниям.Форма поиска находится в navbar, и 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 голосов
/ 27 сентября 2018

Добавьте к вашим маршрутам:

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