2013-04-20 55 views
-2

我正在为一个Rails应用程序提供三种不同国籍的语言支持。填充数据的表格是用JQuery实现的。我想把它们翻译成所有三种语言。栏杆和咖啡脚本如果语句不起作用

此刻,我通过HTML数据属性传递当前语言值:

<table id="companies" class="table table-striped" data-source="<%= companies_url(format: "json") %>" data-language="<%= current_language %>"> 

,并保存到咖啡Lang变量

jQuery -> 
    Lang = $('#companies').data('language') 
    $('#companies').dataTable 
    sPaginationType: "full_numbers" 
    sDom: "Rlfrtip" 
    bJQueryUI: true 
    bDestroy: true 
    bProcessing: true 
    bServerSide: true 
    sAjaxSource: $('#companies').data('source') 
    if Lang == "ro" 
     oLanguage: 
     sProcessing: "Processing...", 

然后我检查是否Lang是“RO” ,“en”或“ru”并加载Coffee脚本所需的部分。 至少这是它应该工作的方式,但事实并非如此。

我试图从Chrome控制台中的表格加载data('language'),该表格可以正常加载,但如果语句不工作,我总是会获得默认的英语语言。

我在做什么错?

+0

如果有疑问,请查看您的CoffeeScript正在编译的JavaScript;你会发现你的选项哈希值非常大。 – meagar 2013-04-20 22:39:58

回答

1

该语法不起作用。您不能在对象声明中放入if语句。您的if需要位于参数列表之外。

options = 
    sPaginationType: "full_numbers" 
    sDom: "Rlfrtip" 
    bJQueryUI: true 
    bDestroy: true 
    bProcessing: true 
    bServerSide: true 
    sAjaxSource: $('#companies').data('source') 

if Lang == "ro" 
    options.oLanguage = { sProcessing: "Processing..." } 

jQuery -> 
    Lang = $('#companies').data('language') 
    $('#companies').dataTable(options) 
+0

谢谢,你的回答比我得到的倒票真的有帮助..我不熟悉js或咖啡..我只花了30分钟找出如何发送lang param到咖啡和另外30分钟清除如果错误,没有运气,来找到答案,再次感谢你。 – rmagnum2002 2013-04-20 22:41:28

+0

正如我上面写的,我只是用js和咖啡蠕动起来,我认为就像在rails中我可以使用if语句,只要我必须放置一些条件..看起来不是:) – rmagnum2002 2013-04-20 22:43:47

+0

哇,很好的更新答案,会已经投票了,但我不能:)谢谢你,好教训。 – rmagnum2002 2013-04-20 22:47:13