Рубин на Rails - PullRequest
       9

Рубин на Rails

0 голосов
/ 14 октября 2018

Я хочу реализовать поиск, который проходит по нескольким моделям.

Нашел здесь вопрос о стековом потоке , который использует Ransack, и попробовал его сразу.Но я не могу заставить его работать.

в моем контроллере:

def search
  @quotes = Quote.search(title_cont: q).result
  @books = Book.search(title_cont: q).result
  @users = User.search(username_cont: q).result
end

маршрутов

get '/search', to: 'application#search'

view

<%= form_tag search_path, method: :get do %>
  <%= f.label :title_cont %>
  <%= f.search_field :title_cont %>
  <%= text_field_tag :q, nil %>
<% end %>

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Почему у вас есть два поля в форме поиска, у вас должно быть только одно поле поиска.

<%= form_tag search_path, method: :get do %>
  <%= label_tag :title_cont %>
  <%= search_field_tag :q %>
<% end %>
0 голосов
/ 14 октября 2018

Вы должны использовать params[:q] вместо q.Это должно работать

def search
  @quotes = Quote.search(title_cont: params[:q]).result
  @books = Book.search(title_cont: params[:q]).result
  @users = User.search(username_cont: params[:q]).result
end

Кроме того, f.label и f.search_field не работают с form_tag.Вы должны использовать label_tag и search_field_tag вместо

<%= form_tag search_path, method: :get do %>
  <%= label_tag :title_cont %>
  <%= search_field_tag :title_cont %>
  <%= text_field_tag :q, nil %>
<% end %>
...