ruby-on-rails - Rails Ransack gem:仅使用一个选择选项搜索多个值
问题描述
我使用 ransack gem,我有一个带有多个选项的选择字段状态
status_collection = %w(failed partial successful)
<%= search_form_for @q, :url => validation_path(:anchor => 'list'), :class => 'form-horizontal' do |f| %>
<%= f.select :status_eq, options_for_select(Validation.status_collection, @status_eq_selection), {}, {:class => 'form-control'} %>
<% end %>
在我的控制器中:
def show
@q = Validation.where(report_id: params[:id]).search(params[:q])
@validations = @q.result(distinct: true)
end
我想将选项合并到failed
一个partial
选择选项failed
中,这样如果我搜索failed
then ransack 也应该搜索partial
并合并两个搜索结果。
如何通过选择选项failed
和属性来搜索状态属性,partial
以便我获得合并结果,failed
并且partial
只搜索failed
.
解决方案
根据我们在评论中的讨论,我们可以这样做(未经测试):
before_action :adjust_ransack_params, only: [:show]
private
def adjust_ransack_params
# Only change it if the status_eq is failed
if params.dig(:q, :status_eq) == 'failed'
params[:q].delete(:status_eq)
params[:q][:status_in] = %w(failed partial)
end
end
推荐阅读
- python - 如何在不删除以前数据的情况下将新数据附加到我的 .csv 文件中
- c# - FormatException:无法从 BsonType 'ObjectId' 反序列化 'Guid'
- python - pygame 中显示的文本如何居中?
- lua - 如何修复:产卵器不在僵尸中产卵
- robotframework - 如果为 2 个不同的页面运行关键字 - 始终未检测到第二个元素并且失败
- arrays - 指向 char 数组的指针数组的正确声明 *
- c++11 - 对象数组中的显式构造函数
- pytorch - PyTorch:随机数据加载器
- python-3.x - 如何在本网站的 //div[@class='body'] 中抓取所有文本?
- java - AkkaSystem.scheduler() 和 AkkaSystem.dispatcher() 是否作为单线程工作?