我正在尝试使用select_tag为报表生成器创建记录范围。其中一个报告项目是能够选择多个"状态"为报告。即。 '已批准','拒绝'等等。
params很好,控制台报告:
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(对于其他表单元素)。我的想法是使用claim_scope并将其用作源(因为它已经是作用域)。但我不能让claim_scope有两个,三个或更多& #34;状态"。它是一个或全部。
答案 0 :(得分:0)
只需将scope
用于多个值:
scope :by_statuses, (statuses)-> { where(claim_status_id: statuses) }
现在您可以通过单个或多个(数组)状态找到对象