Не можете использовать cont_any для многотермического поиска с Ransack (Rails 5)? - PullRequest
0 голосов
/ 04 сентября 2018

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

Например, если у меня есть блог "Я живу в Огайо", я бы хотел, чтобы пользователь мог искать "Я Огайо", и он нашел бы блог. Я пробовал следующее, которое не работает:

  <%= search_form_for @search do |f| %>
      <%= f.search_field :title_or_description_cont_any %>
      <% f.submit %>
  <% end %>

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

   def index
     @search = Blog.ransack(params[:q])
     @blogs = @search.result
   end

Я бы подумал, что cont_any будет работать, но по какой-то причине это не так?


ОБНОВЛЕНИЕ: я использую также active_admin, я не знаю, имеет ли это значение?

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Title и description должны быть фактическими полями в вашей базе данных. Например, если вы создали модель Post с полями в ней, содержащими header, subtitle и shortDescription, вам нужно будет использовать эти поля вместо title и description.

<%= f.input :title_or_description_cont_any %>
<%= f.input :title_or_description_cont %>

примерно так:

<%= f.input :header_or_shortDescription_cont_any %>
0 голосов
/ 04 сентября 2018

Я думаю, что это должно быть похоже на следующее

def index
  @search = Blog.ransack(params[:q])
  @blogs = @search.result(distinct: true)
end

Ваша форма должна выглядеть следующим образом,

<%= search_form_for @q do |f| %>
  <%= f.search_field :title_or_description_cont %>
<% end %>
...