Как распечатать NULL из ruby в javascript?

#javascript #ruby-on-rails #ruby

#javascript #ruby-on-rails #ruby

Вопрос:

Если у вас есть javascript, написанный на HAML, с массивом ruby, интерполируемым в javascript, как вы заставляете 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?

Ответ №1:

Попробуйте:

 #{@column_sort_types.to_json}
  

to_json будет работать с nil:

 nil.to_json
 => "null"
  

Ответ №2:

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

При этом используется Object#present? , что является противоположностью blank? . Это дополнения к Object от ActiveSupport. Объекты являются пустыми, если они либо пустые, либо имеют значение nil, false или представляют собой строку, состоящую только из пробелов.

Ответ №3:

Если я правильно понимаю, что вы имеете в виду, вы можете использовать способность ruby ‘open class’:

 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} . Поправьте меня, если я вас неправильно понял.

Ответ №4:

просто передайте nil в javascript, javascript будет обрабатывать его как переменную с именем «nil», затем определите переменную var nil = null в javascript.

Ответ №5:

%Q, похоже, является элементом, которого мне не хватало.

 %Q[null, null]
  

Ответ №6:

Использование «NULL» в Ruby on Rails приведет к печати «NULL» (с кавычками) в javascript. Но javascript нужен null без кавычек. Я все еще не мог понять это.