如何从ruby打印出NULL到javascript?

时间:2011-11-07 21:38:04

标签: javascript ruby-on-rails ruby

如果你在HAML中编写了javascript,并且将ruby数组插入到javascript中,那么如何使用ruby打印出NULL?

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

如果@column_sort_types包含空格或nil,则不会打印出NULL。并尝试向ruby数组添加NULL会产生ruby错误。我是否必须执行javascript正则表达式?

6 个答案:

答案 0 :(得分:3)

尝试:

#{@column_sort_types.to_json}

to_json适用于nil:

nil.to_json
 => "null"

答案 1 :(得分: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}。如果我理解你错了,请纠正我。

答案 2 :(得分: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的补充。对象为空,如果它们为空或者为nil,false或仅为空格的字符串之一。

答案 3 :(得分:1)

只需将nil传递给javascript,javascript会将其视为名为“nil”的变量,然后在javascript中定义变量var nil = null

答案 4 :(得分:0)

%Q似乎是我缺少的元素。

%Q[null, null]

答案 5 :(得分:0)

在Ruby on Rails中使用“NULL”将在javascript中打印“NULL”(带引号)。但javascript需要null而不带引号。我仍然无法想出这个。