如何将ruby中的NULL打印到javascript中

How do you print out NULL from ruby to javascript?

本文关键字:打印 javascript NULL 中的 ruby      更新时间:2023-09-26

如果在HAML中编写javascript,并在javascript中插入一个ruby数组,那么如何让ruby打印出NULL?

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

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

尝试:

#{@column_sort_types.to_json}

to_json将在nil:上工作

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

这使用与blank?相反的Object#present?。这些是ActiveSupport对Object的添加。如果对象为空,或者为nil、false或仅包含空格的字符串之一,则对象为空。

如果我完全理解你的意思,你可以使用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}。如果我理解错了,请纠正我。

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

%Q似乎是我丢失的元素。

%Q[null, null]

在RubyonRails中使用"NULL"将在javascript中打印"NULL"(带引号(。但是javascript需要没有引号的null。我还是想不通这个。