[英]dry-validation: dynamically change locale?
我在Rails 5項目中使用Trailblazer 2.1(因此使用了干燥驗證(0.11.1))。
我有2種不同的語言區域設置綁定到用戶個人資料。
當我動態更改用戶的語言環境時-dry-validation不會注意到它-並始終以以前的語言環境產生驗證錯誤。
怎么了? 這是錯誤還是功能? 干驗證為什么不響應區域更改? 如何解決?
這是我的語言環境切換代碼:
class ApplicationController < ActionController::Base
before_action :switch_locale
def switch_locale
I18n.locale = current_user.locale
end
end
我酸痛地找到了解決方案。 這只是dry-validation
內部的錯誤。 我發現並成功地解決了此問題:
config / initializers / dry_validation.rb :
Rails.application.configure do
Dry::Validation::Schema.configure do |config|
config.messages = :i18n
end
Dry::Validation::Schema::Form.configure do |config|
config.messages = :i18n
end
end
# https://github.com/dry-rb/dry-validation/issues/368
# Monkey patch MessageCompiler to make the failing example pass:
module PatchMessageCompiler
def default_lookup_options
{ locale: messages.default_locale }
end
end
Dry::Validation::MessageCompiler.prepend PatchMessageCompiler
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.