Help us understand the problem. What is going on with this article?

【Sinatra】でレンダリング

SintraでHTMLファイルの呼び出しをしていきます!

*参考
https://qiita.com/kimioka0/items/751e460cbb59c70379c6#05-url%E3%81%8B%E3%82%89%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%82%92%E4%BD%BF%E3%81%8A%E3%81%86-2
http://sinatrarb.com/intro.html
https://qiita.com/itaya/items/f5b915e2b89457c6f514

Railsとほぼ同じ

やり方はRailsとほぼ同じでした。

myapp.rb
``` myapp.rb
中略

get '/' do
@code = "ブリ"
erb :index
end
```

サーバ起動後、http://localhost:4567/
を探しに行きます。
@code = "ブリ" で、@codeにHTMLファイルで使える変数を持たせることが出来ます。

index``` で、同ディレクトリ配下のview/index.erbファイルを探しに行きます。

ここはRailsと違うところですね。
Railsならindex.html.erbとなってますし、ファイル名も決まり切ってます。
自由に設計できるのも良いですね。

view/index.erb

ってます
てな感じでHTMLファイルを呼び出すことができます。


# erbの呼び出しファイルを並べてみる

myapp.rb
``` myapp.rb
中略

get '/' do
  @code = "ブリ"
  erb :index
end

で、erbファイルを複数呼び出すことはできないのかと思い、viewフォルダに適当なerbファイルを2つ追加することにします。

myapp.rb

get '/' do
@code = "ブリ"
erb :index
erb :code
erb :sub
end

すると、erbで呼び出す一番下の「erb :sub」が呼び出されました。
「erb :~~」を存在しないファイルをの内容を指定するとエラーになったので、記述されているファイルは全部呼び出されて、最終的に表示されるのが一番下に記述されているファイルなんじゃないかなと思います。

「erb :~~」で呼び出すのは記述されているファイルの一番下のものになることが分かりました。

共通レイアウトの設定

viewファイルの下に共通レイアウト用のlayout.erbを作成します。

layout.erb

<head>
<mata charset="utf-8">
<title><%= @title %></title>
</head>
<body>
<div>title</div>
<%= yield %>
</body>
</html>

こちらもRailsと同じく<%= yield %>を使用することで、erbのファイルを呼び出すことが出来ます。
しかし、すべてのファイルに共通レイアウトが設定されてしまいます。

そこで、myapp.rbのerbファイル行に, :layout => nilを追加します。

myapp.rb

get '/' do
  @code = "ブリ"
  @title = "main"
  @content = "main contnt"
  erb :index
end

get '/sub' do
  @code = "タイ"
  erb :code, :layout => nil
end

http://localhost:4567/
では、共通レイアウトが適応され、titleという文字列が出現すると思います。

http://localhost:4567/sub
では共通レイアウトがnilなので、共通レイアウトが適応されません。

gussan-dayo
どうも~ 関西でエンジニアをしてます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした