gpt4 book ai didi

ruby-on-rails - 仅使用默认语言环境的 Rails 模型

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:31 26 4
gpt4 key购买 nike

  • 我有一个带有自定义验证的模型。我返回验证使用 AJAX 以 JSON 形式查看的错误。
  • 我需要显示错误具有正确语言环境的消息,但消息每个语言环境都以英语(默认)显示。
  • 当我返回 I18n.locale 时本身而不是消息(用于故障排除),无论设置的语言环境是什么,它都显示“en”。
  • Controller 或 View 中的 I18n 按预期工作,这个问题仅发生在模型中。
  • 我所做的关于语言环境的唯一配置是在应用程序配置中设置默认语言环境,并在应用程序 Controller 中的每个操作之前设置语言环境。
  • 我注意到的另一件事是,当我在不提供语言环境的情况下使用 root_path 时,它使用的是默认语言环境,而不是按应有的方式保留当前语言环境。我认为这些问题是相互关联的

编辑:

  • 当我在 controller#create 中打印 locale 参数时,我得到了 nil。出于某种原因我根本没有语言环境参数

模型文件:

validate :relevant_date_time

def relevant_date_time
errors.add(:date_error, I18n.t("validations.date_error")) unless date_time_is_relevant?
end

应用程序 Controller :

before_action :set_locale

def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end

我是不是忘记了什么?

我查看的信息:

最佳答案

如果您在 application_controller.rb 中设置语言环境,它将只在所有 Controller 和 View 中有效,而不在模型中有效。

所以你也必须在模型中设置语言环境。与您在 Controller 中所做的相同。

在 Controller

Model.new(params.merge(locale: I18n.locale))

内部模型

attr_accessible :locale      

before_validation() do
I18n.local = locale
end

def relevant_date_time
errors.add(:date_error, I18n.t("validations.date_error")) unless date_time_is_relevant?
end

关于ruby-on-rails - 仅使用默认语言环境的 Rails 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40463334/

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