Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery验证未设置正确的语言_Jquery_Ruby On Rails_Coffeescript_Jquery Validate - Fatal编程技术网

jQuery验证未设置正确的语言

jQuery验证未设置正确的语言,jquery,ruby-on-rails,coffeescript,jquery-validate,Jquery,Ruby On Rails,Coffeescript,Jquery Validate,我试图用jqueryvalidate验证表单,但它似乎没有以正确的语言返回错误消息 在我的Rails应用程序中,我有: Gemfile gem 'jquery-validation-rails' application.js //= require rails-ujs //= require turbolinks //= require jquery //= require bootstrap-sprockets //= require jquery.validate //= require

我试图用jqueryvalidate验证表单,但它似乎没有以正确的语言返回错误消息

在我的Rails应用程序中,我有:

Gemfile

gem 'jquery-validation-rails'
application.js

//= require rails-ujs
//= require turbolinks
//= require jquery
//= require bootstrap-sprockets
//= require jquery.validate
//= require jquery.validate.localization/messages_it
//= require jquery.validate.localization/messages_ja
//= require_tree .
我使用以下命令调用验证器:

document.addEventListener 'turbolinks:load', ->
  $("#contact-form").validate
    submitHandler: (form) ->
      form.submit()

  $('#first_name').rules 'add',
    required: true,
    maxlength: 15

  $('#last_name').rules 'add',
    required: true,
    maxlength: 15

  $('#entry_email').rules 'add',
    required: true,
    maxlength: 60

  $('#phone-number').rules 'add',
    required: true,
    digits: true
我看到了错误消息,但即使我将页面区域设置切换到
en
it
,它们也会以日语显示

出现的语言基本上是我在application.js文件中设置的最后一种语言。因此,如果我删除
/=requirejquery.validate.localization/messages_ja
,那么我会得到意大利语的错误消息

如何在每个区域设置的基础上获取错误消息

如果您能帮助解决此问题,我们将不胜感激


提前感谢

不要在application.js中加载jquery的翻译。直接在应用程序布局中执行此操作

// in your layout file you have something like this:
<%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

// additionally load translations based on given params
<% if params[:locale].present? %>
  <%= javascript_include_tag "jquery.validate.localization/messages_#{params[:locale]}" %>
<% end %>

// OR loading based on I18n.locale
<%= javascript_include_tag "jquery.validate.localization/messages_#{I18n.locale}" %>
//在布局文件中有如下内容:
//另外,根据给定的参数加载转换
//或基于I18n.locale加载

根据当前设置I18n.locale,您应该在html中设置它。然后将该语言保存为js变量。有了这个js var,您可以正确地使用验证器:我添加了一个带有两种可能性的答案。这项工作还需要将它们添加到assets.rb中的
Rails.application.config.assets.precompile
。谢谢