[英]How to refactor simple filter action in Rails?
我想使用兩個參數過濾我的@jobs
。
現在我有這樣的事情:
def filter
if params[:filter][:trade].present? && params[:type].present?
@jobs = Job.accepted.with_accepted_company.where(:trade_id => params[:filter][:trade],:job_type =>params[:type])
render :index
elsif params[:filter][:trade].present?
@jobs = Job.accepted.with_accepted_company.where(:trade_id => params[:filter][:trade])
render :index
elsif params[:type].present?
@jobs = Job.accepted.with_accepted_company.where(:job_type =>params[:type])
render :index
else
redirect_to jobs_path
end
end
def filter
filters = {
:trade_id => params[:filter][:trade],
:job_type => params[:type]
}
filters.delete_if { |key,value| value.blank? }
if filters.count > 0
@jobs = Job.accepted.with_accepted_company.where(filters)
render :index
else
redirect_to jobs_path
end
end
def filter
h = {}
params[:filter][:trade].tap{|v| h[:trade_id] = v if v.present?}
params[:type].tap{|v| h[:job_type] = v if v.present?}
if h.empty?
redirect_to jobs_path
else
@jobs = Job.accepted.with_accepted_company.where(h)
render :index
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.