【发布时间】:2017-06-20 03:38:46
【问题描述】:
我正在尝试使用 select_tag 为报表生成器创建记录范围。报告项目之一是能够为报告选择多个“状态”。 IE。 “批准”、“拒绝”等。
参数输入正常,控制台报告:
Parameters: {"utf..., "status"=>["Pending", "Approved"]}
但我无法让我的控制器正确确定范围。我目前正在模型中设置范围:
scope :claim_status_pending, -> { where(claim_status_id: '1') }
scope :claim_status_approved, -> { where(claim_status_id: '2') }...
在我的控制器中:
if params[:status].present?
new_claims_scope = Claim.none
if params[:status].include? 'Pending'
pending_scope = claims_scope.claim_status_pending
new_claims_scope = pending_scope.merge(new_claims_scope)**
elsif params[:status].include? 'Approved'
approved_scope = claims_scope.claim_status_approved
new_claims_scope = approved_scope.merge(new_claims_scope)
else params[:status].include? 'Any'
new_claims_scope = claims_scope.where("claim_status_id > ?", 0)
end
claims_scope = new_claims_scope
end
我的观点是这样处理的:
= select_tag "status", options_for_select([ "Any", "Pending", "Approved", "Denied", "Under Review" ], "Any"), multiple: true
“claims_scope”已经从 Claims.all 缩小范围,使用 .where( 对于其他表单元素。我的想法是采用 Claims_scope 并将其用作源(因为它已经确定了范围)。但我无法让 Claims_scope 到有两个、三个或更多“状态”。它是一个或全部。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4