定义全局变量rails

时间:2016-04-11 20:03:22

标签: ruby-on-rails

现在我认为我有这个:

      <div class="test-date-picker">
          <input class="test-date-picker-value" ui-mask="99/99/9999"></input>
     </div>

我需要在控制器中复制代码的每个方法中定义@categories。

@categories.each do |category|

如何摆脱重复?

1 个答案:

答案 0 :(得分:1)

无需定义类或全局变量,因为查询之间的结果可能会更改。 我想添加一些memoization并将副本提取到单独的方法中:

def home
  categories
end

def contacts
  categories
end

def categories
  @categories ||= Category.where(:parent_id => '').order("id").each
end

最好在模型中定义scope

class Category < ActiveRecord::Base
  scope :categories_without_parent, -> { where(:parent_id => '') }
end

在控制器方法categories中看起来像:

def categories
  @categories ||= Category.categories_without_parent
end