rails 中的帮助目录

Helper directory in rails

helper 目录下的一个文件会包含在所有控制器中吗?。我没有找到任何好的解释。我的控制器中有 2 个自定义目录(如普通用户的管理员)。我的助手有相同的目录结构吗? Helper 名称是否与控制器名称相同只是为了便于阅读?

默认情况下,app/helpers 下的所有帮助文件都包含在所有控制器中。因此,您如何构建 helpers 文件夹中的内容并不重要。如果你真的想强制控制器只包含匹配的助手,那么将配置中的 config.action_controller.include_all_helpers 设置为 false

详情见评论区:https://github.com/rails/rails/blob/b5db73076914e7103466bd76bec785cbcfe88875/actionpack/lib/action_controller/metal/helpers.rb

Helper 只是一个 ruby 模块,可用于视图和控制器。如果您不想让代码暴露给视图,则永远不要将代码保存在 helper 中。

如果您想为所有控制器和视图使用辅助方法。然后您可以将方法添加到应用程序助手并将其包含到应用程序控制器中。但是,如果您不想向视图公开方法,则可以使用 rails 关注点。在其中创建一个方法并将其包含在不同的控制器中。

无帮手请勿重名只是为了便于阅读。如果你想在控制器中使用它,你仍然需要在你的同名控制器中包含调用函数。但是您仍然可以使用同名的内部视图方法。