Sinatra を起動したばかりで、h1
html タグで名前をレンダリングしようとしましたが、うまくいきません。文字列はhtmlタグなしで来ていますが、必要に応じてhtmlタグをレンダリングしていませんが、それをどのように処理すればよいか教えてくださいSinatra
私のコード -
get '/nesh' do
name = "Swapnesh"
"Hello <h1> #{name} </h1> Sinha"
end
ブロックから返す文字列は、HTTPリクエストで返される文字列とまったく同じであるため、タグget '/nesh'
でラップされていません。、など<html>...</html>
の周囲のタグを配置する場合は、Sinatraビューテンプレートを作成し、ビュー情報(など)をビューレンダラーに渡す必要があります。<html>
<body>
name
完全な例は次のようになります。
app.rb:
set :views, settings.root + '/templates'
get '/nesh' do
name = "Swapnesh"
erb :hello, :locals => {:name => name}
end
templates / layout.erb:
<html>
<body>
<%= yield %>
</body>
</html>
テンプレート/hello.rb:
<h1>Hello <%= name %> Sinha</h1>
レンダリングされたすべてのアクションの基本テンプレートであるSinatraレイアウトも使用したことに注意してください(オプトアウトされていない場合)。
最後に、名前付きテンプレートを使用して、すべてを1つのファイルに実装できます。
template :layout do
<<-EOF
<html>
<body>
<%= yield %>
</body>
</html>
EOF
end
template :hello do
"<h1>Hello <%= name %> Sinha</h1>"
end
get '/nesh' do
name = "Swapnesh"
erb :hello, :locals => {:name => name}
end
HTML
と Sinatraを使用する場合はerb
、 、または同様のものを使用して を表示する必要がありHTML
ます。
コードの例:
get '/nesh' do
name = "Swapnesh"
erb :resultPage, :locals => {:name => name}
end
例 resultPage.erb:
<p> Hello <h1> <%=#{name}%> </h1> Sinha</p>
これが正しい方法かどうかはわかりませんが、この方法を試してみたところ、うまくいきました..
require 'sinatra'
get '/nesh' do
@name = "Swapnesh"
erb :test
end
__END__
@@test
<!doctype html>
<html lang="en">
<head>
<title>Test Sinatra pass</title>
<meta charset="utf-8">
</head>
<body>
<p> Hello <h1> <%= @name %> </h1> Sinha</p>
</body>
</html>