我在Rails中编写了一个应用程序,它正在快速增长并且我正在学习它。但是我不了解助手。
application_helper.rb
module ApplicationHelper
# This file it's empty
end
users_helper.rb
module UsersHelper
def avatar
# Do something
end
end
customer_helper.rb
module CustomerHelper
# This file it's empty
end
为什么在任何客户的视图中都可以在用户帮助模块上调用头像辅助方法? 那么,为什么要在许多文件中分离助手呢?
提前致谢。
P.S:Rails'版本4。
答案 0 :(得分:7)
因为默认情况下所有控制器都包含所有控制器。在这种情况下,单独的文件实际上仅用于逻辑分离。您可以改变这种行为:
默认情况下,每个控制器都包含所有帮助程序。
在以前版本的Rails中,控制器将包含一个帮助程序 其名称与控制器的名称相匹配,例如,MyController将 自动包含MyHelper。返回旧的行为集
config.action_controller.include_all_helpers
至false
。
http://api.rubyonrails.org/classes/ActionController/Helpers.html
答案 1 :(得分:0)
加入Mike Campbell的回答:
<强>框架强>
Rails是一组神奇的文件 顺序
这些文件包含
classes
,methods
等;但他们仍然是档案。 这意味着当你通过Rails运行一个动作时,它会加载 一系列其他dependent
文件,以帮助它运行(这就是一个 框架是)Rails的设计使您的
helper
方法全部 每次运行操作时都会加载。我不知道为什么,但它有所帮助 管理应用程序不同区域的方法
所以回答你的问题,没有真正的理由为什么帮助者被分开,至少在Rails 4