如何在Ruby on Rails中的Ajax请求期间保留语言环境?

时间:2013-01-31 17:41:05

标签: ruby-on-rails ruby ajax ruby-on-rails-3 ruby-on-rails-3.2

我在Rails中有一个Ajax函数,其中所选的选择框值会更改另一个选项框中的可用选项:

# application.js
$("#project_person_id").change(function() {
    $.ajax({
        url: '/projects/get_billing_address_types',
        data: 'person_id=' + this.value,
        dataType: 'script'
    })
});

# get_billing_address_types.js.erb
$('#project_billing_address_type').html("<%= escape_javascript(options_for_select(@types)) %>");

不幸的是,由于我将我的应用本地化为两种不同的语言,因此无效。

当我现在更改第一个选择框的值时,我在另一个内部出现错误:

<option value="h">translation missing: en.views.home</option>

有没有办法将语言环境传递给javascript?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如何在非XHR请求中保留URL?您只需将其作为查询字符串参数传递给url即可。然后使用before_filter将I18n语言环境设置为该传递的参数。

class ApplicationController < ActionController:Base

  before_filter :select_locale

  def select_locale
    I18n.locale = params[:locale] || "en"
  end

应用程序控制器通常用于执行此类操作,但如果您愿意,可以将其放在特定的控制器中以限制使用。