Ruby on rails 4 Rails 4中的助手
我用Rails编写了一个应用程序,它发展很快,我也在学习。但我不了解帮手 应用程序\u helper.rbRuby on rails 4 Rails 4中的助手,ruby-on-rails-4,helpers,Ruby On Rails 4,Helpers,我用Rails编写了一个应用程序,它发展很快,我也在学习。但我不了解帮手 应用程序\u helper.rb module ApplicationHelper # This file it's empty end module UsersHelper def avatar # Do something end end module CustomerHelper # This file it's empty end users\u helper
module ApplicationHelper
# This file it's empty
end
module UsersHelper
def avatar
# Do something
end
end
module CustomerHelper
# This file it's empty
end
users\u helper.rb
module ApplicationHelper
# This file it's empty
end
module UsersHelper
def avatar
# Do something
end
end
module CustomerHelper
# This file it's empty
end
customer_helper.rb
module ApplicationHelper
# This file it's empty
end
module UsersHelper
def avatar
# Do something
end
end
module CustomerHelper
# This file it's empty
end
为什么在任何客户看来都可以在用户助手模块上调用化身助手方法?
那么,为什么要在许多文件中使用单独的助手呢
提前谢谢
注意:Rails的版本4。因为默认情况下,所有控制器中都包含所有帮助程序。在这种情况下,单独的文件实际上只是用于逻辑分离。您可以通过以下方式改变这种行为: 默认情况下,每个控制器将包括所有帮助程序 在以前版本的Rails中,控制器将包含一个助手 其名称与控制器的名称匹配,例如MyController将 自动包含MyHelper。返回旧行为集的步骤
config.action\u控制器。将所有帮助程序包含到false
要补充迈克·坎贝尔的答案:
框架
Rails是一组名为
依次
这些文件包含类
,方法
等;但它们仍然是文件。
这意味着当你通过Rails运行一个动作时,它会加载
帮助它运行的一系列其他文件(这是
框架(is)
Rails的设计使得您的helper
方法都是
每次运行操作时都会加载。我不知道为什么,但这很有帮助
管理应用程序不同区域的方法
因此,为了回答您的问题,没有真正的原因来解释为什么助手会被拆分,至少在Rails 4中是这样的:module ApplicationHelper
?如果是这样,那么您已经在ApplicationHelper
模块中定义了avatar方法,这就是它工作的原因。抱歉,编写示例是一个错误。我假设您写错了问题?用户帮助程序有:UsersHelper
,对吗?将帮助程序拆分为不同的文件将使代码更干净。当有三个空文件时,你可能不会注意到,但你的应用程序可能会增长,然后你会感激某些结构而不是一个大文件。默认情况下,每个视图都可以访问任何帮助程序。是否有特定原因导致它们在默认情况下包含所有帮助程序?似乎没有必要。与只在每个控制器中包含所需的助手相比,包含所有控制器是否会对性能产生负面影响?