Rails中的助手4

时间:2014-01-31 09:12:46

标签: ruby-on-rails-4 helpers

我在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。

2 个答案:

答案 0 :(得分:7)

因为默认情况下所有控制器都包含所有控制器。在这种情况下,单独的文件实际上仅用于逻辑分离。您可以改变这种行为:

  

默认情况下,每个控制器都包含所有帮助程序。

     

在以前版本的Rails中,控制器将包含一个帮助程序   其名称与控制器的名称相匹配,例如,MyController将   自动包含MyHelper。返回旧的行为集   config.action_controller.include_all_helpersfalse

http://api.rubyonrails.org/classes/ActionController/Helpers.html

答案 1 :(得分:0)

加入Mike Campbell的回答:


<强>框架

  

Rails是一组神奇的文件   顺序

     

这些文件包含classesmethods等;但他们仍然是档案。   这意味着当你通过Rails运行一个动作时,它会加载   一系列其他dependent文件,以帮助它运行(这就是一个   框架是)

     

Rails的设计使您的helper方法全部   每次运行操作时都会加载。我不知道为什么,但它有所帮助   管理应用程序不同区域的方法

所以回答你的问题,没有真正的理由为什么帮助者被分开,至少在Rails 4