Rails 5 在 class 中包含助手
Rails 5 include helper in class
我们正在从 Rails 4.2 迁移到 5.2。以下代码在 4.2 中工作正常但在 5
中不工作
require 'action_view'
module OurModule
class CheckReport
include ActionView::Helpers::DateHelper
def self.our_method
start_time = Time.current
LOGGER.info "OurModule::CheckReport.our_method finished in #{distance_of_time_in_words(start_time, Time.current)}"
end
end
end
但是在 Rails 5 中我们得到:
NoMethodError: undefined method `distance_of_time_in_words' for OurModule::CheckReport:Class
这似乎是因为这些是 class 方法而不是实例方法。
那么,为什么它在 Rails 4(相同的 ruby 版本 - 2.4.9)中有效,我们可以做些什么来修复它(除了使所有这些情况成为实例方法之外?)
看到有人来这里寻找答案,我是这样做的:
require 'action_view'
module OurModule
class CheckReport
def self.our_method
start_time = Time.current
LOGGER.info "OurModule::CheckReport.our_method finished in #{ActionController::Base.helpers.distance_of_time_in_words(start_time, Time.current)}"
end
end
end
我们正在从 Rails 4.2 迁移到 5.2。以下代码在 4.2 中工作正常但在 5
中不工作require 'action_view'
module OurModule
class CheckReport
include ActionView::Helpers::DateHelper
def self.our_method
start_time = Time.current
LOGGER.info "OurModule::CheckReport.our_method finished in #{distance_of_time_in_words(start_time, Time.current)}"
end
end
end
但是在 Rails 5 中我们得到:
NoMethodError: undefined method `distance_of_time_in_words' for OurModule::CheckReport:Class
这似乎是因为这些是 class 方法而不是实例方法。
那么,为什么它在 Rails 4(相同的 ruby 版本 - 2.4.9)中有效,我们可以做些什么来修复它(除了使所有这些情况成为实例方法之外?)
看到有人来这里寻找答案,我是这样做的:
require 'action_view'
module OurModule
class CheckReport
def self.our_method
start_time = Time.current
LOGGER.info "OurModule::CheckReport.our_method finished in #{ActionController::Base.helpers.distance_of_time_in_words(start_time, Time.current)}"
end
end
end