如果在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。我还是想不通这个。