2011-11-07 35 views
1

如果你的JavaScript是在HAML中編寫的,將一個紅寶石數組插入到javascript中,你如何獲得ruby來打印NULL?如何從ruby打印出NULL到javascript?

:javascript 
    $().ready(function() { 
    $(document).ready(function() { 
     $("table#hands-table").dataTable({ 
     "aoColumns" : #{@column_sort_types}, 

如果@column_sort_types包含一個空的空間或零,也不會打印出NULL。並嘗試將NULL添加到一個紅寶石數組創建一個紅寶石錯誤。我必須執行JavaScript正則表達式嗎?

回答

1
:javascript 
    $().ready(function() { 
    $(document).ready(function() { 
     $("table#hands-table").dataTable({ 
     "aoColumns" : #{@column_sort_types.present? ? @column_sort_types : "NULL"}, 

這使用Object#present?其爲blank?相反。這些是由ActiveSupport添加到Object。對象是空白的,如果它們是空的或無,錯誤或只有一個空白字符串。

3

嘗試:

#{@column_sort_types.to_json} 

的to_json將在無工作:

nil.to_json 
=> "null" 
+0

這並不能解決空白字符串的情況。 –

1

如果我正確地理解你什麼意思,你可以使用Ruby的 '公開課' 的能力:

class Array 
    def to_array_with_null 
    self.map do |val| 
     val = "NULL" if val.nil? or (val.respond_to? :empty? and val.empty?) 
     val 
    end 
    end 
end 

[1, '2', 3, nil, ''].to_array_with_null # => [1, "2", 3, "NULL", "NULL"] 

在這種情況下,您可以使用#{@column_sort_types.to_array_with_null}而不是#{@column_sort_types}。糾正我,如果我明白你錯了。

0

%Q似乎是我錯過的元素。

%Q[null, null] 
0

在Ruby on Rails中使用「NULL」將在javascript中輸出「NULL」(帶引號)。但JavaScript不需要引號。我仍然無法弄清楚這一點。

1

只是將nil傳遞給javascript,javascript會將其視爲名稱爲「nil」的變量,然後在javascript中定義變量var nil = null