簡體   English   中英

如何在Rails中重構簡單的過濾器動作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM