0

我想过滤我的@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
4

2 回答 2

3
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
于 2013-01-21T20:52:40.387 回答
-1
 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
于 2013-01-21T20:58:34.967 回答