У меня есть панель навигации для всех представлений, которая отображается в application.html.erb с такой формой:
<form class="form-inline d-none d-lg-inline-flex">
<%= form_tag search_query_path, method: :get do |f| %>
<%= text_field_tag :query, params[:query], class: "form-control", placeholder: "Search" %>
<%= submit_tag "Search", name: nil %>
<% end %>
</form>
Я хочу найти похожие названия в модели Post.
Методы в PostsController следующие:
def search_query
@results = Post.find_by_sql("SELECT * FROM posts WHERE title LIKE '%#{params[:query]}%'")
end
def search_query_params
params.require(:post).permit(:query)
end
private :search_query_params
Проблема: поиск продолжает обрабатываться текущим контроллером текущего представления. Если я индексная страница (в PagesController), запрос выполняется там, просто перезагружая URL-адрес следующим образом:
http://localhost:3000/?utf8=%E2%9C%93&query=test+title
Я все перепробовал и не могу найти, где моя логика неверна.
Это маршруты:
get '/search_query', to: 'posts#search_query', as: 'search_query'