Поиск рансака не работает с частями

Я попытался использовать поиск 'ransack' с моим приложением, он работает до тех пор, пока он находится в представлении индекса контроллера, он не работает, когда я пытаюсь поместить тот же код в партиалы. У частичного есть заголовок с полем поиска в нем

Мое индексное действие эксперта-контроллера выглядит так:

def index
@search = Expert.search(params[:q])
@experts = @search.result
end

Код, который я использовал в индексном представлении эксперта:

<form class="navbar-form navbar-left" role="search">                                        
<%= search_form_for @search do |f|  %>
  <div class="form-group">
      <div class="field">
                <%=f.text_field:Location_or_Description_or_Industry_or_Current_Organization_or_Current_Position_cont, :class => "form-control" %>
      </div>
  </div>
  <%= f.submit "Search" , :class => "btn btn-default icon-search"  %> 
<% end %>
</form> 

Я пытаюсь использовать этот код частично, чтобы я мог искать на любой странице в моем приложении. Ошибка, которую я получаю, когда я делаю это

ArgumentError in Praclycore#index

Showing c:/repos/pracly/app/views/layouts/_header.html.erb where line #24 raised:
No Ransack::Search object was provided to search_form_for!

<li class="home"><%= link_to image_tag("/img/home.png"), root_path, :class=>"home" %></li>

<form class="navbar- form navbar-left" role="search">                                   
    <%= search_form_for @search do |f|  %>
    <div class="form-group">
    <div class="field">
    <%= f.text_field :Location_or_Description_or_Industry_or_Current_Organization_or_Current_Position_cont, :class => "form-control" %>




Trace of template inclusion: app/views/layouts/application.html.erb

Rails.root: c:/repos/pracly

Я новичок в ruby ​​on rails, было бы очень признательно, если бы кто-нибудь сказал мне, как я могу использовать Ransack с частями и какой дополнительный код мне нужно предоставить, чтобы это работало.

1 ответ

@search переменная экземпляра недоступна ни в каком контексте, кроме Expert#search - вам нужно будет установить эту переменную (или, что еще лучше, использовать гем Достойный_экспозиция) и либо выставить ее на уровне ApplicationController, либо создать ее в фильтре перед.

Другие вопросы по тегам