select2 rails按过滤器选项搜索?

时间:2018-05-18 06:57:33

标签: ruby-on-rails ruby jquery-select2 select2-rails

也许你们中的某个人能够帮助我。

让我们说我有一本书模型。 我想搜索我所有的书名,我现在已经在select2rails的帮助下完成了。每本书属于一个类别,我想启用一个“过滤器”功能,我选择一个类别,我的搜索栏显示所有结果,但只在选定的类别中。

例如:

我有一本名为Lord of the rings的书属于幻想类别。我还有一个属于该类别的家族的主人。当我在搜索栏中输入lord时,将显示两个标题,但我想要选择一个类别。

(我已经阅读了有关select2的文档,并且无法找到任何可以帮助我解决此问题的内容。)

示例:选择的类别=幻想

我输入了领主,只会显示戒指的主人。

我如何实现这一目标?

<!-- Search Widget -->
<div class="card my-auto">
  <%= form_with url: books_path , method: :get, local: true  do |f| %>
    <div class="card-body">
      <p>Search for a Book title.</p>
      <%= f.collection_select(:book_id, Book.all, :id, :title, {include_blank: 'Book titles'}, {class:'selectbooktitle form-control'}) %>
      <hr>
      <div class="input-group">
                <span class="input-group-btn">
                  <%= f.submit 'Search', class: 'btn btn-outline-success', method: :put %>
                </span>
      </div>
    </div>
    </div>
  <% end %>

book.rb

class Book < ApplicationRecord
  belongs_to :user
  belongs_to :category
  has_many :reviews, dependent: :destroy

  has_attached_file :book_cover, styles: { book_index: '250x350>', book_show: '325x475>' }
  validates_attachment_content_type :book_cover, content_type: /\Aimage\/.*\z/
end

books_controller

def index

    if params[:category].blank?
      @books = Book.all.order('created_at DESC')
    else
      @category_id = Category.find_by(name: params[:category]).id
      @books = Book.where(category_id: @category_id).order('created_at DESC')
    end
    return redirect_to book_path(params[:book_id]) if params[:book_id]
  end

0 个答案:

没有答案