我对轨道范围感到困惑

时间:2014-05-20 03:13:55

标签: ruby-on-rails

我对rails Helper范围感到困惑。

我在PagesHelper中定义了一个testpage方法

module PagesHelper
  def testpage
    "testpagehelper"
  end
end

但为什么我可以在views / users / index.html.erb

中使用testpage方法
<h1><%= testpage %> </h1>

我认为testpage仅用于views / pages / index.html.erb?

我认为辅助方法的范围太广了。

如果我在UsersHelper中定义了相同的方法,则会出现问题。

module UsersHelper
  def testpage
    "testuserhelper"
  end
end

帮助器中有两个testpage,但是resutl是view / pages / index.html,而view / users / index.html都使用UsersHelper中的“testpage”?为什么?

2 个答案:

答案 0 :(得分:1)

New Rails应用程序在ApplicationController中使用helper :all - 这意味着所有帮助程序都在从ApplicationController继承的所有控制器中加载。我同意这范围太广了。因此,您应该将其更改为helper :application,然后让每个控制器只接入自己的帮助程序。请注意,每个控制器都会自动引入具有其名称的帮助程序,因此您不必在UsersController中包含helper :user

答案 1 :(得分:0)

不同的帮助程序模块只是帮助您组织方法。您可以在非相关视图中使用PageHelper,但是您应该这样做吗?由程序员来决定。