Использование before_action и перенаправление на другое действие работало для меня.Например, если вы ищете сообщения, настройте маршрут для поиска по коллекции.
resources :posts do
collection do
get 'search'
end
end
и сделайте HTTP-запрос GET для сообщений # действие index.
<%= form_tag posts_path, method: :get do %>
<%= search_field_tag :q, params[:q], placeholder: "Search posts" %>
<%= submit_tag "Go" %>
<% end %>
, а затемв PostsController,
before_action :check_for_query, only: :index
...
private
def check_for_query
redirect_to articles_search_url(q: params[:q]) if params[:q].present?
end
и вызовите Post.search в сообщениях # действие поиска и индексирования страницы индекса.
def search
Post.search(params[:q])
render :index
end
URL будет выглядеть как / posts / search? q = foo