Вывести любую переменную внутри контроллера ruby ​​sinatra - PullRequest
0 голосов
/ 20 мая 2018

Мне нужно вывести (скажем, отобразить в браузере) значение переменной, которая находится внутри контроллера Ruby sinatra:

get '/endpoint' do        
  someVariable = MyModel.All
  # print/output/dump someVariable value !
end

Я пробовал put, puts, print... ничего не помогает.

1 Ответ

0 голосов
/ 24 мая 2018

Простой метод, который вы ищете, это просто вернуть строку.Эта строка будет отображаться в вашем браузере.

Примечание: puts, p и т. Д. Распечатайте значения в журнале сервера, а не в браузере.Это также может быть полезно, но, очевидно, не то, что вы искали.


Внимание # 1 , в вашем случае вы возвращаете коллекцию объектов,Это не строка и не будет правильно понята Синатрой, поэтому вы не сможете ничего увидеть в своем браузере.Одним из решений является сериализация вашего объекта перед отправкой его в браузер:

get '/' do
  ..
  object.to_s   # or object.to_json
end 

Внимание # 2 (хитроумный:)) : объект, преобразованный в сериализованное через to_s или to_json может оказаться в таком формате:

#<OpenStruct name="John Doe", age=44>

В этом случае ваш браузер обнаружит открывающие / закрывающие скобки (< и >) и попытаетсяинтерпретируйте это как тег HTML, и содержимое, отображаемое в браузере, будет пустым или будет содержать только начальный символ # в данном примере.Чтобы избежать этого, вы можете принудительно задать тип содержимого ответа, чтобы он не пытался интерпретировать ответ как HTML и просто отображал необработанные символы:

get '/' do
  ..
  content_type :txt
  object.to_s  # or object.to_json
end
...