在 Rails 中处理视图和仅帮助程序常量的最佳方法
Posted
技术标签:
【中文标题】在 Rails 中处理视图和仅帮助程序常量的最佳方法【英文标题】:Best way to handle view and helper-only constants in Rails 【发布时间】:2011-01-17 04:42:12 【问题描述】:我有一个仅在视图中使用的常量,但它在不同的地方以不同的方式使用。它是一个选项名称数组,用于选择框,但我也在其他视图中使用它来查看是否在此数组中找到字符串,并做出相应的响应。
处理此问题以保持干燥的最佳方法是什么?
我最初在帮助程序中创建了一个常量,但在视图中似乎无法访问。
我已经切换到在帮助程序中创建一个方法,除了返回常量之外什么都不做。然而,这似乎真的违背了 Rails 的精神,因为现在基本上我使用的是小写常量。
我当然可以将它贴在模型中,但它与任何模型都无关。
【问题讨论】:
【参考方案1】:您可以在帮助程序中定义常量,但您需要在视图中通过它们的完全限定名称来引用它们。
application_helper.rb
module ApplicationHelper
MyConstant = "something"
end
在任何视图中:
<%= ApplicationHelper::MyConstant %>
【讨论】:
在控制器/模型中,您可以使用include ApplicationHelper
,以避免键入它。但是,您不能在视图中执行此操作,对吗? ://
事实证明,您在控制器中include
的任何模块都可用于视图。
你也可以在助手中写一个方法来引用它,这样你就不必在视图中重复助手名称了。【参考方案2】:
把它放在config/initializers/constants.rb
中,它就会随处可用。
【讨论】:
添加一个全局常量似乎有点不幸,因为它只会在视图和帮助器中使用,我不确定这是否比仅使用方法为其别名更好。 仅供参考 - 在 rails 4 生产模式中不再是这种情况 - 模板位于不同的命名空间中,需要通过 ApplicationController:CONSTANT_NAME 访问常量以上是关于在 Rails 中处理视图和仅帮助程序常量的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章