使用Sinatra庫,我試圖壓縮顯示HTML代碼到一個函數的兩個函數。這兩個函數只有少量的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
所以,它不工作? – 2012-03-19 19:29:08
「幹」的概念,即「不要重複自己」,就是你在說的。最好重構成能夠理解差異的一段代碼,並有條件地將特定上下文中所需的內容替換掉,這樣就不會有大量冗餘的代碼。 – 2012-03-19 20:25:56