如何优化这段代码mental block Rails

时间:2012-05-19 07:30:21

标签: ruby-on-rails-3.1

我想将这两种方法组合成一种方法。但对于我的生活,我看不出如何。 NOOB大时间。任何帮助赞赏。

  def is_active_no_category
      'active' if params[:category].blank?
  end


  def is_active(category)
      'active' if  params[:category] == category.name.parameterize
  end

1 个答案:

答案 0 :(得分:2)

使用以下函数传递category作为参数是可选的。如果您传递参数,它将像您的is_active_no_category方法一样工作。如果您执行传递参数。它会像is_active方法一样工作。

def is_active(category = nil)
  'active' if (category.present? && params[:category] == category.name.parameterize) || (category.nil? && params[:category].blank?)
end

您可以使if声明更紧凑,但您没有说明您的功能的确切要求,因此我为您提供了最完整的解决方案。