【问题标题】:In rails, what is the best way to define constant strings (like error messages, notices, etc)?在 Rails 中,定义常量字符串(如错误消息、通知等)的最佳方法是什么?
【发布时间】:2012-09-25 17:47:09
【问题描述】:

上周左右我一直在学习 Rails,我刚刚开始接触 BDD。任何 cucumber 或 rspec 教程中的典型示例是确保将成功/错误消息显示为检查操作成功或失败。

这意味着现在有一个恒定的消息,例如“您的消息已成功传递”在代码中两次 - 一次在应用程序中,另一次在测试中。这对我来说很奇怪......它不是 DRY,它是开发人员赖以生存的,如果您想将消息更改为其他内容,则必须执行两次。

这是标准吗?我在 locales 目录中阅读了有关 en.yml 的内容,想知道是否有人将它用于他们的字符串。到目前为止,我还没有在任何教程中看到这一点,这就是我要问的原因。 en.yml 中的字符串对 cucumber/rspec 测试是否可见?如果是这样,我如何在代码中访问它们?如果 en.yml 不可行,rails 开发人员如何存储他们的常量字符串值?

【问题讨论】:

    标签: ruby-on-rails testing localization rspec cucumber


    【解决方案1】:

    使用区域设置文件来存储与区域设置相关的字符串,例如您提到的消息。然后只需执行以下操作:

    page.should have_content I18n.translate(:message_delivered)
    

    【讨论】:

    • 如果我不需要翻译,是否还需要使用I18n.translate?是否有另一种方法可以访问 en.yml 中的字符串(或更好的存储它们的方法)?主要是因为 I18n 打字很痛苦,而且看起来很丑
    • 啊,好吧,我发现 rails 有一个辅助方法 t,所以我可以直接调用 t(:message_delivered)。这对我有用。
    • 严格来说,你不需要使用 locales 文件。但从头开始实施 i18n 被认为是一种很好的做法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2013-03-30
    相关资源
    最近更新 更多