1

Sinatra を起動したばかりで、h1html タグで名前をレンダリングしようとしましたが、うまくいきません。文字列はhtmlタグなしで来ていますが、必要に応じてhtmlタグをレンダリングしていませんが、それをどのように処理すればよいか教えてくださいSinatra

私のコード -

get '/nesh' do
    name = "Swapnesh"
    "Hello <h1> #{name} </h1> Sinha"
end
4

3 に答える 3

4

ブロックから返す文字列は、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
于 2013-03-03T17:55:53.327 に答える
2

HTMLと Sinatraを使用する場合はerb、 、または同様のものを使用して を表示する必要がありHTMLます。

コードの例:

get '/nesh' do
    name = "Swapnesh"
    erb :resultPage, :locals => {:name => name}
end

例 resultPage.erb:

<p> Hello <h1> <%=#{name}%> </h1> Sinha</p>
于 2013-03-03T16:53:36.610 に答える
1

これが正しい方法かどうかはわかりませんが、この方法を試してみたところ、うまくいきました..

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>
于 2013-03-03T17:59:04.413 に答える