Как направить поиск навигационной панели к определенному представлению индекса? - PullRequest
1 голос
/ 18 октября 2019

Я пытаюсь реализовать поиск по навигационной панели и пытался следовать этим решениям https://stackoverflow.com/a/19929707/5101493 и https://stackoverflow.com/a/52538766/5101493.

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

Как это исправить? Вот мои соответствующие файлы:

application_controller

before_action :set_global_search_variable

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

enterprises_controller

def index
  @businesses = @p.result(distinct: true).sort_by(&:name)
end

def search
  index
  render :index
end

маршруты

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

_header частично

<form class="form-inline" style='display:show'>
 <%= search_form_for @p , url: search_businesses_path, :html => { method: :post } do |f| %>
   <%= f.search_field :name_cont, {placeholder: " Find a business...", class: 'form-control mr-sm-2'} %>
   <%= f.submit "Search", class: "btn look-red my-2 my-sm-0 navsearch" %>         
 <% end %>
</form>

1 Ответ

1 голос
/ 18 октября 2019

Вы не можете иметь форму внутри другой формы. Самая внешняя форма всегда направляется на текущую страницу.

Вместо этого сделайте внешнюю форму div.

<div class="form-inline" style='display:show'>
 <%= search_form_for @p , url: search_businesses_path, :html => { method: :post } do |f| %>
   <%= f.search_field :name_cont, {placeholder: " Find a business...", class: 'form-control mr-sm-2'} %>
   <%= f.submit "Search", class: "btn look-red my-2 my-sm-0 navsearch" %>         
 <% end %>
</div>
...