我可以有 rails Helper 而没有相应的 Controller 吗?

Can I have a rails Helper without a corresponding Controller?

只是对Rails架构有疑问,我有Model Notification,但是我没有NotificationsController,我需要在我的视图中使用一些通知方法,这就是我想创建的原因NotificationsHelper 文件。我现在也许我可以将这些方法放在 ApplicationHelper 中,但这个文件已经很长了。

所以有一个Helper文件没有相应的Controller也可以吗?还是不行?

只是要注意一些事情。首先,正如他们在评论中所说,是的,您可以这样做,只需在 helpers 目录中定义它即可。

要在您的 视图 中使用该新文件中定义的方法,您只需像调用任何其他辅助方法一样调用它们。

要在您的控制器中使用它们,有两种选择。

  • 在您的控制器中包含模块,(如评论之一所述)
  • 使用方法helpers(至少在Rails 5)。也就是说,在您的控制器中,您可以使用任何帮助程序中定义的任何方法,例如

    class SomeController < ApplicationController def some_action helpers.some_method_from_any_helper end end

第二种方法的好处是您不必在控制器中公开不需要的方法。