gpt4 book ai didi

ruby-on-rails - 在 Ruby on Rails 应用程序中随处调用方法

转载 作者:数据小太阳 更新时间:2023-10-29 07:44:28 24 4
gpt4 key购买 nike

我正在使用 Ruby on Rails 3.0.9,我正在努力使从所有内部助手、 Controller 、模型和 View 文件中调用一些方法成为可能。我想做的是创建一个库来在我的应用程序内部构建\标准化命名约定,以便我可以使用\运行如下内容:

standardized_name = standardize_name(Article)

您有什么建议?

P.S.:我听说过 mixin,但我应该如何在我的案例中使用它们?此外,我不想在每个需要使用它的类中声明该 mixin 的包含(也就是说,我希望有一个“独特”的声明,在我的所有应用程序类中包含该 mixin)。

最佳答案

在 Rails MVC 的所有层中都可以访问的类似库是 I18n。您可以使用 I18n.t 调用 translate 方法,而在 View 和 Controller 层中有一个 helper t 方法,因此您不需要每次都键入整个“I18n.t”。

我们可以看看 I18n 是如何做到的。您可以在应用程序的 lib 目录中创建一个模块。确保更新 application.rb 以便加载您的模块。在 application.rb 中查找此注释:

# Custom directories with classes and modules you want to be autoloadable.
# config.autoload_paths += %W(#{config.root}/extras)

显然,如果您取消注释 autoload_paths 行,请将“extras”更改为“lib”。

这是一个示例模块 lib/Karate.rb:

module Karate
class << self
def punch(grunt)
puts "#{grunt}! *punch*"
end
end
end

现在您可以在应用程序的任何地方调用它:

Karate.punch("boom")
# => boom! *punch*

如果你想在 View 和 Controller 层中使用辅助方法,只需在 application_controller.rb 中添加一个方法即可:

def punch(grunt)
Karate.punch(grunt)
end

并将此方法声明为辅助方法(也在 application_controller.rb 中),如下所示:

helper_method :punch

但是,请确保您确实需要这个库。我没有质疑你的理由,因为它不会回答你的主要问题。我认为你应该在你的代码中练习你的命名约定,如果必须的话将它添加到 README 中或者发送电子邮件给你的团队。此外,Rails 和 Ruby 已经有了命名约定,所以一定要了解它。

关于ruby-on-rails - 在 Ruby on Rails 应用程序中随处调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6854360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com