在 Rails 中,哪里是放置需要“随处”可用的方法的正确位置

2024-03-16

我已经将许多小实用方法(例如用于重新格式化或解析字符串等简单对象)放入了 ApplicationHelper 中。

但是,模型中的类方法显然无法访问 ApplicationHelper 方法。

有一个解决方法,那就是在我的项目中进行洒水:

include ApplicationHelper # needed to use apphelper method in instance method
extend ApplicationHelper # needed to use apphelper method in class method

这似乎有效。但这似乎是一个拼凑。

有没有更好的地方来放置实用程序方法,以便可以从我的项目中的任何位置访问它们 - 视图、控制器方法、模型实例方法、模型类方法?


这是什么lib/是为了.我有一个文件位于lib/deefour.rb with

require "deefour/core_ext"

module Deefour; end

我将自定义方法放入lib/deefour/helpers.rb

module Deefour
  module Helpers
    extend self

    def some_method
      # ...
    end
  end
end

和核心猴子补丁lib/deefour/core_ext.rb

class String
  def my_custom_string_method(str)
    # ...
  end
end

In config/initializers/deefour.rb I put

require "deefour"

In your config/application.rb确保你有

config.autoload_paths += Dir["#{config.root}/lib"]

最后,在ApplicationController (对于控制器), ApplicationHelper (查看),以及其他我需要的地方(即这里和那里的特定模型)我只是做

include ::Deefour::Helpers
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Rails 中,哪里是放置需要“随处”可用的方法的正确位置 的相关文章

  • 修改rails ActiveAdmin gem中的BaseController

    我在 Rails 应用程序中使用 ActiveAdmin gem 如果我想添加一个适用于所有 activeadmin gem 的新的 before 过滤器 我该怎么做 我想我可以修改 ActiveAdmin 中的 BaseControlle
  • 在 Ruby/Rails 模型/控制器中引用关联/属性时 *、self.* 和 @* 之间的差异

    假设 Rails 模型具有持久 非持久属性 那么引用它们的最佳实践是什么 如果您查看公开可用的代码 就会发现使用了不同的模式 例如 如果您有从一个模型到另一个模型的关联 使用有什么区别self association name and 协会
  • 用 ruby​​ 解决旅行商问题(50 多个位置)

    我在一家快递公司工作 目前 我们 手动 解决了 50 多个地点的路线 我一直在考虑使用 Google Maps API 来解决这个问题 但我读到有 24 点的限制 目前我们在服务器中使用 Rails 因此我正在考虑使用 ruby 脚本来获取
  • 如何使用 RSpec & Rails 4 测试子域约束

    我正在尝试编写一个测试子域约束的 控制器测试 但是 我无法让 RSpec 设置子域 并且如果子域不准确则返回错误 我正在使用 Rails 4 2 6 和 RSpec 3 4 路线 rb namespace frontend api do c
  • 如何检查 Rails 中的会话大小?

    我希望session size session length or session count工作 但它们都返回 未定义的方法 为什么 不是session a hash 那是好奇心 实际问题 有没有办法检查会话大小 以 KB 为单位 目前我
  • 通过 Assets Pipeline 携带 Sass 变量,Rails 3.1 rc1

    我最近将我的 Rails 3 0 项目之一与 3 1 rc1 进行了分支 以尝试新的资产管道 在使用 3 1 之前 我一直在项目中使用 Sass 因此我在单独的配置文件中设置了一些变量和函数 并让所有其他 sass 文件在第一行导入该文件
  • 多个 Rails 应用程序,单个 MySQL 数据库

    我打算为 site com api site com admin site com 分别创建多个 Rails 应用程序 所有应用程序都将从一个 MySQL 数据库访问相同的表 应用程序和数据库在同一服务器上运行 对于上述访问场景 Rails
  • 如何根据多对多相关模型的属性查找记录?

    楷模 InternalUser has many internal user roles has many roles through gt internal user roles InternalUserRole belongs to i
  • 数据库被锁定?

    我如何修复数据库锁 因为我的测试没有通过 它使同一类别中的一堆测试失败 谢谢 1 UsersController GET edit should have a link to change the Gravatar Failure Erro
  • Rails 命名空间与嵌套资源

    假设我的应用程序有两个模型 Foo 和 Bar Foo 可选地属于 Bar 现在我可以查看单个 Foo 或者搜索特定的 Foo FoosController 会处理所有这些 我的网址是这样的 foos 1 and foos new 有时我想
  • 如何在rescue_from中渲染500页

    我想在我的应用程序出现异常时发送电子邮件并呈现常规 500 页 我找不到如何执行 500 页渲染 class ApplicationController lt ActionController Base rescue from Standa
  • CORS 与 Amazon S3 和 Cloudfront

    我有一个托管在 Heroku 上的 Rails 应用程序 它使用 CloudFront 以及托管在 S3 上的资产 它完美地显示了资产 尽管需要一些努力 我的 Cloudfront 设置 Forward Headers Whitelist
  • 如何在S3中存储数据并允许用户使用rails API / iOS客户端以安全的方式访问?

    我是编写 Rails 和 API 的新手 我需要一些有关 S3 存储解决方案的帮助 这是我的问题 我正在为 iOS 应用程序编写一个 API 用户在 iOS 上使用 Facebook API 登录 服务器根据 Facebook 向 iOS
  • Rails:CSS 在开发和生产中似乎有所不同

    我有一个标准的 Rails 4 heroku 设置 有一点很奇怪 页面的不同元素在本地环境和生产环境中以不同的尺寸显示 例如 虽然 header height 设置为特定的像素值 但两个环境的高度不同 与内容的宽度相同 我将最大宽度设置为
  • “PG DuplicateTable:错误关系“产品”已存在”- Heroku db:迁移尝试

    Rails 菜鸟尝试将 DB 迁移到 Heroku 请原谅这个错误消息的多汁性 但我认为将其全部包含在内可能很重要 我不知道为什么会发生这种情况 也不知道这意味着什么 我的架构中只有一张产品表和一张创建产品迁移表 Migrating to
  • 如何使用键盘进入 ruby​​-debug 运行 Rails 应用程序?

    我正在运行 ruby debugbundle exec rdebug script server在 Rails 2 3 上 当我按下Ctrl C 它退出整个程序和调试器 我希望它停止执行程序并将我带入调试器会话 I tried catch
  • 在 Ruby on Rails 中渲染部分集合正在乘以项目

    我想在 Ruby on Rails 的页面中显示项目列表 我使用部分 in my index html erb我有的文件 in list news html erb I have div class news div
  • 如何让 Rails 资产管道生成源地图?

    我想让 Rails 与编译后的 CoffeeScript 缩小的 JS 一起生成源映射 以便更好地记录错误 不过 网上似乎还没有关于如何执行此操作的全面文档 有人这样做过吗 我使用 Rails 3 2 和 Heroku Rails 支持缩小
  • 单表继承发现问题

    我有以下3个rails类 它们都存储在一张表中 使用rails的单表继承 class Template lt ActiveRecord Base class ThingTemplate lt Template class StockThin
  • 如何让我的导航栏出现在 Rails 应用程序的每个页面上?

    目前 我的导航栏位于我的index htm erb 文件中 目前仅在主页上显示 我想知道为了让导航栏出现在我的应用程序的每一页上 必须采取哪些必要步骤 我的导航栏的代码如下所示

随机推荐