我可以将HTML放入变量吗?

时间:2012-03-19 19:27:56

标签: ruby sinatra

使用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的一小部分并将其传递给将显示该页面的这两个函数的单个精简版本。 / p>

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 个答案:

答案 0 :(得分:2)

您可以在heredoc中插入变量:

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

例如。

答案 1 :(得分:1)

没有理由你不能这样做。但是,如果您想要打印它,您可能必须使用rails中的String#html_safe或haml中的!=等函数