在哪里放置 Rails 控制器的 Ruby 帮助器方法?

我有一些 Ruby 方法,这些方法是某些(或全部)控制器所需的。我试过把它们放进 /app/helpers/application_helper.rb。我已经将它用于视图中使用的方法。但是控制器看不到这些方法。是否还有其他地方需要放置它们,还是需要以不同的方式访问这些助手方法?

使用最新的稳定 Rails。

62534 次浏览

您应该在 ApplicationController中定义方法。

Ryan Bigg 反应良好。

其他可能的解决方案是向控制器添加助手:

class YourController < ApplicationController
include OneHelper
include TwoHelper
end

最好的问候!

您可以使用 view_context从控制器调用任何 helper 方法,例如。

view_context.my_helper_method

您应该在应用程序控制器中定义方法,如果方法很少,那么可以按照以下步骤进行

class ApplicationController < ActionController::Base
helper_method :first_method
helper_method :second_method


def first_method
... #your code
end


def second_method
... #your code
end
end

还可以按照以下方式包含帮助器文件

class YourController < ApplicationController
include OneHelper
include TwoHelper
end

对于 Rails 4以后的发展,关注点才是正确的选择。有一篇不错的文章仍然可以通过 Wayback Machine 的 ABc0。

实际上,如果您查看您的控制器文件夹,您应该看到一个关注子文件夹。沿着这些线创建一个模块

module EventsHelper
def do_something
end
end

然后,在控制器中包含它

class BadgeController < ApplicationController
include EventsHelper


...
end

在控制器中包含帮助器将最终将帮助器方法作为操作公开!

# With new rails (>= 5)


helpers.my_helper_method




# For console


helper.my_helper_method