Rails 5 простая форма поиска просто не будет работать - PullRequest
0 голосов
/ 03 мая 2018
  • У меня есть панель навигации для всех представлений, которая отображается в 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'

1 Ответ

0 голосов
/ 04 мая 2018

form_tag создает элемент формы, поэтому вы вкладываете форму в форму здесь. Попробуйте удалить внешнюю форму.

...