我在application.js
文件中有这个Ajax函数:
$("#project_person_id").change(function() {
$.ajax({
url: '/projects/get_invoice_types',
data: 'person_id=' + this.value,
dataType: 'script'
})
});
是否可以在该功能中使用区域设置?
当我将第3行更改为:
url: '/de/projects/get_invoice_types',
我得到了预期的结果(即德语输出)。
但我当然想动态设置它。怎么办呢?
感谢您的帮助。
答案 0 :(得分:3)
您可以在任何地方动态设置它,即
var locale = "de"; // set it dynamically
并将其用作全局,如此
$("#project_person_id").change(function() {
$.ajax({
url: "/"+locale+'/projects/get_invoice_types', // use it
data: 'person_id=' + this.value,
dataType: 'script'
})
});
更优雅的原因是将其设置为正文标记<body data-locale="de">
或HTML标题<html lang="de">
的数据属性,并使用函数将其拉出
function locale() { return $("body").data("locale") }
或
function locale() { return $("html").attr("lang") }
,然后像这样检索它:
$("#project_person_id").change(function() {
$.ajax({
url: "/"+locale()+'/projects/get_invoice_types', // use it
data: 'person_id=' + this.value,
dataType: 'script'
})
});
当然还有其他选择,这些似乎很简单。
答案 1 :(得分:0)
我解决了修改$ .get和$ .post jQuery函数的问题。
我的情况我的情况是语言环境是网址中的参数,但它可以作为 Sagish 进行注入
col-md-9
当我调用$ .get或$ .post时,语言环境会自动添加到URL:
(function ($) {
var oPost = jQuery.post;
var oGet = jQuery.get;
jQuery.post=function(url , data , success , dataType ){
if (typeof data === "undefined") {
data={};
}
data=add_locale_to_url(data);
return oPost.apply(this,[url , data , success , dataType]);
}
jQuery.get=function(url , data , success , dataType ){
if (typeof data === "undefined") {
data={};
}
data=add_locale_to_url(data);
return oGet.apply(this,[url , data , success , dataType]);
}
})(jQuery);
答案 2 :(得分:0)
我通过向erb模板添加数据属性解决了这个问题。
<button type="button" class="btn btn-success" id="save-job-position-btn" data-locale="<%= params[:locale] %>"><%= t("save") %></button>
$( "#save-job-position-btn" ).click(function() {
var locale = $(this).data("locale");
}