1

我有我的application.js文件這裏面阿賈克斯功能:如何在Ruby on Rails中設置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', 

我得到了想要的結果(即在德國輸出。)。

但我當然想動態設置它。如何才能做到這一點?

感謝您的任何幫助。

回答

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' 
    }) 
}); 

當然還有其他的選擇,這些看起來非常簡單。

+0

這很好。非常感謝你的幫助! – Tintin81

0

我解決了這個問題,修改$ .get和$ .post jQuery的函數。

我我的情況下,語言環境是在URL參數,但它可以作爲注射Sagish確實太

(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); 

當我打電話和$ .get或$ .post的語言環境會自動添加到網址:

... 
var remote_search=$.get("/expenses/search_users/"+$(this).val()); 

    remote_search(function(data) { 
      $("#processing").hide(); 
      alert("Usuari inexistent"); 
      obj_error.val(""); 
}); 
...