我的控制器中有以下内容:
@filt= params[:filter] || 'no_filter'
if params[:subcategory].nil? || params[:subcategory] == "null"
@resources = Resource.find_by_category(params[:category]).approved.send(@filt).page(params[:page]).per(30)
else
@resources = Resource.find_by_category(params[:category]).find_by_subcategory(params[:subcategory]).approved.send(@filt).page(params[:page]).per(30)
end
我想减少此代码,以便我不重复?
答案 0 :(得分:0)
@filt= params[:filter] || 'no_filter'
r = Resource.find_by_category(params[:category])
r = r.find_by_subcategory(params[:subcategory]) unless [nil, 'null'].include? params[:subcategory]
@resources = r.approved.send(@filt).page(params[:page]).per(30)
您不必将所有内容放在链接作用域的一行中,例如Model.scope1.scope2
等。您可以通过s = Model.scope1; s = s.scope2
执行此操作,如上面的代码示例所示。