【问题标题】:Is there a way to interpolate attribute values out of the box with i18n and Rails 4?有没有办法用 i18n 和 Rails 4 插值开箱即用的属性值?
【发布时间】:2016-08-02 18:17:43
【问题描述】:

我正在尝试向用户提供更好的验证错误消息。例如,给定的唯一性验证消息说明了以下内容:

学生已注册此课程

但是,我想说:

学生 Leroy Jenkins 已经注册了 Calculus II

原因是因为我有一个嵌套表单,同时创建了很多students_courses,所以用户可能会看到半打这样的消息,他们不会知道哪些学生是无效的。

ActiveRecord 是否为我们提供了自动获取模型属性进行插值的任何选项?像%{model.student.name} 这样的东西?如果没有,我已经知道如何手动传递参数进行插值,我只是问是否有更好的方法。

顺便说一句,它必须使用 i18n,因为我们必须支持不止一种语言。


上面的错误信息放在en.yml这个结构下的文件里:

activerecord:
  errors:
    models:
      students_courses:
        taken: "is already enrolled in this course"

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 activerecord internationalization


    【解决方案1】:

    您可以在此文档中查看可用于错误消息插值的内容:http://guides.rubyonrails.org/i18n.html#error-message-interpolation

    对于您的用例,这意味着不,您不能在这里使用模型。你实际得到的是 value 在你的情况下,我猜这将是课程的 ID。

    但它应该没那么糟糕,您可以通过创建一个新的或类似的逻辑并将其用于验证来调整 UniquenessValidator 的逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多