Синатра не поддерживает несколько строк? - PullRequest
1 голос
/ 09 февраля 2010

Для следующего кода, почему печатается только «Мир»

get '/' do
 "Hello"
 "World"
end

Ответы [ 6 ]

12 голосов
/ 09 февраля 2010

Это не имеет ничего общего с самой синатрой. Он просто использует возвращаемое значение блока, а в ruby ​​возвращаемое значение является последним вычисленным выражением, которое в вашем случае является "World". Это может работать для вас:

get '/' do
  r = "Hello"
  r += "World"
end

В этом случае вы добавляете столько строковых значений к r, сколько хотите, и последнее выражение возвращает полную строку "HelloWorld".

4 голосов
/ 09 февраля 2010

Поправьте меня, если я ошибаюсь, но я верю в простой рубин, последняя оцененная строка - это то, что возвращается.

3 голосов
/ 09 февраля 2010

Томас правильно ответил на ваш вопрос, но один из способов сделать то, что я думаю, вы хотите сделать (вывести несколько строк), вы можете использовать:

get '/' do
  output =<<EOS
Hello
World
EOS
  output
end
1 голос
/ 09 февраля 2010

Не путайте ваш контроллер с вашим представлением.

Что вы, вероятно, ищете, это:

get '/' do
  haml :hello_world
end

А потом в views/hello_world.haml:

Hello
World
1 голос
/ 09 февраля 2010

Вы можете использовать символ разрыва строки для разделения строк ..

get '/' do
"Hello\nWorld"
end
0 голосов
/ 23 февраля 2010

Я согласен с Мэттом.

Если вы хотите, вы можете использовать этот метод и с одним файлом.

 get '/' do
   erb :hello_world
 end

__ END __

@@ hello_world
привет
мир

Я просто использую put внутри моего контроллера, чтобы распечатать отладку в STDOUT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...