Могу ли я поместить HTML в переменную? - PullRequest
0 голосов
/ 19 марта 2012

Используя библиотеку Sinatra, я пытаюсь объединить две функции, которые отображают HTML-код, в одну функцию.Обе эти функции отличаются лишь небольшим количеством HTML.Вот пример.

def make_start_page()
   <<EOS
   <!DOCTYPE html>
   <html lang="en">
   <head>
   </head>
   <body>
      <p> Hello </p>
      <img src="..." />
   </body>
   </html>
   EOS
end

def make_guess_page()
   <<EOS
   <!DOCTYPE html>
   <html lang="en">
   <head>
   </head>
   <body>
      <p> Something different </p>
      <a href="..." >1</a>
   </body>
   </html>
   EOS
end

В функции Ruby, которая будет вызывать эти две функции, мне было интересно, можно ли взять небольшую часть HTML, которая отличается, и передать ее в одну сжатую версиюэти две функции, которые будут отображать страницу.

def handle()
   if 1
      var = "<p> Hello </p>
      <img src="..." />"
   elsif 2
      var = "<p> Something different </p>
      <a href="..." >1</a>"
   make_start_guess_page(var)
end

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

Вы можете интерполировать переменные в heredoc:

def make_start_page(var)
   <<EOS
   <!DOCTYPE html>
   <html lang="en">
   <head>
   </head>
   <body>
      #{var}
   </body>
   </html>
   EOS
end

Например.

1 голос
/ 19 марта 2012

Нет причин, по которым ты не смог бы этого сделать.Однако, если вы хотите распечатать его, вам, вероятно, придется использовать такие функции, как String#html_safe в рельсах или != в хамле

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