Как использовать Ransack в NavBar форме поиска?

Обновить

April 2019

Просмотры

81 раз

1

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

Как получить результаты поиска рыскать во время отображения любой другой страницы с той же навигационной панели?

1 ответы

0

Add to your routes:

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

In 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

And in pins controller:

  def index
    @pins = @q.result
  end