如何将导航栏搜索路由到特定的索引视图?

问题描述 投票:0回答:1

我正在尝试实施导航栏搜索,并尝试遵循以下解决方案https://stackoverflow.com/a/19929707/5101493https://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

businesses_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>
ruby-on-rails ruby-on-rails-5 ransack
1个回答
0
投票

您不能在另一个表单中拥有一个表单。最外面的形式总是路由到当前页面。

相反,使最外面的形式为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>
© www.soinside.com 2019 - 2024. All rights reserved.