Поиск рансака не работает с частями
Я попытался использовать поиск '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, либо создать ее в фильтре перед.