これにアプローチするにはいくつかの方法があります (ところで、 ERB を使用したことがありますが、Hamlを使用するつもりです。これは、私にとってタイピングが少なく、明らかに改善されているためです)。それらのほとんどはrequest ヘルパーに依存しており、ほとんどの場合はrequest.path_info
.
ビュー内の条件付き。
レイアウトだけでなく、任意のビュー内で:
%p
- if request.path_info == "/page1"
= "You are on page1"
- else
= "You are not on page1, but on #{request.path_info[1..]}"
%p= request.path_info == "/page1" ? "PAGE1!!!" : "NOT PAGE1!!!"
ルート付きの条件。
get "/page1" do
# you are on page1
message = "This is page 1"
# you can use an instance variable if you want,
# but reducing scope is a best practice and very easy.
erb :page1, :locals => { message: message }
end
get "/page2" do
message = nil # not needed, but this is a silly example
erb :page2, :locals => { message: message }
end
get %r{/page(\d+)} do |digits|
# you'd never reach this with a 1 as the digit, but again, this is an example
message = "Page 1" if digits == "1"
erb :page_any, :locals => { message: message }
end
# page1.erb
%p= message unless message.nil?
before
ブロック。
before do
@message = "Page1" if request.path_info == "/page1"
end
# page1.erb
%p= @message unless @message.nil?
またはさらに良い
before "/page1" do
@message = "Hello, this is page 1"
end
またはそれ以上
before do
@message = request.path_info == "/page1" ? "PAGE 1!" : "NOT PAGE 1!!"
end
# page1.erb
%p= @message
また、これを行う場合は、 Sinatra Partialを参照することをお勧めします。これは、ジョブ用に作成されたヘルパーがあれば、ビューの分割を処理する方がはるかに簡単だからです。