0

我的控制器中有以下内容:

  @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

我想减少这段代码,以免重复?

4

1 回答 1

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,如上面的代码示例中所示。

于 2013-04-03T13:47:17.660 回答