Sinatraライブラリを使用して、HTMLコードを表示する2つの関数を1つの関数に集約しようとしています。これらの機能はどちらも少量のHTMLだけが異なります。 例を示します。この2つの関数を呼び出しますRubyの機能で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
違いHTMLの小さな部分を取ると表示されますこれらの2つの関数のシングル、要約版にそれを渡すことが可能であるならば、私は思っていましたページ。
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
それで、それは動作しませんか? –
「DRY」のコンセプト、つまり「自分を繰り返さない」は、あなたが話していることです。違いを理解し、特定のコンテキストで必要なものを条件付きで置き換えることで、大部分が冗長なコードを持たないコードにリファクタリングする方がよいでしょう。 –