我的控制器中有以下代码
class BooksController < ApplicationController
expose(:search) { search_books }
expose(:search_results) { load_results }
def search_books
search = Book.ransack(params[:q])
search.sorts = 'updated_at desc' if search.sorts.empty?
search
end
def load_results
search.result(distinct: true)
end
end
在我看来,我有很多的搜索领域设置的各种图书属性,即。title_eq
、body_cont
等
当我单击搜索按钮时,字段为空,Ransack仍然通过q:
参数发送参数,即使它们为空。即Parameters: {"utf8"=>"✓", "q"=>{"title_eq"=>"", "book_eq"=>""}
等。
我在Ransack里面搜索过,想看看他们是否有一个方法来判断参数是否为空,但我找不到。最好的解决办法是什么?
1条答案
按热度按时间xwbd5t1u1#
当你可以删除所有的空搜索参数时,你可以调用
compact_blank
来只返回params
中有值的键/值。