演習課題「間違い探し」
右の環境には、Sinatraで「RPGの行動選択メニュー」を表示するプログラムが作成されています。このプログラムは、メニューで「あいさつ」という項目をクリックしても、メニューが表示されたままになります。間違いを修正して、「hello sinatra」と表示するように修正してください。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
※ 採点時は、サーバーを起動し、問題文に関するページにアクセスできる状態にしてください。
#07:テンプレートを別のファイルに分離しよう
ここでは、Webアプリケーションのデータの処理と表示の分離について学習します。例として、erbで記述したテンプレートを別ファイルにしてみましょう。
viewsディレクトリにテンプレートファイルを格納する
player_menu.rb
views
 |
 - indnex.erb
   action.erb
テンプレートファイル名は、erbの引数でシンボルとして指定する。# メニュー, /, メニューを表示
get '/' do
    @player = '勇者'
    erb :index
end
# あるく, /walk, 荒野を歩いていた。
get '/walk' do
    @player = '勇者'
    @message = "#{@player}は、荒野を歩いていた。"
    erb :action
end
# 見た目とロジックを分離する
require 'sinatra'
require 'sinatra/reloader'
require 'erb'
# メニュー
get '/' do
    @player = '勇者'
    erb :index
end
# あるく
get '/walk' do
    @player = '勇者'
    @message = "#{@player}は、荒野を歩いていた。"
    erb :action
end
# たたかう
get '/attack' do
    @player = '勇者'
    @message = "#{@player}は、モンスターと戦った。"
    erb :action
end
<!DOCTYPE html>
<html lang="ja">
    <head>
        <mata charset="utf-8">
        <title>Sinatra - paiza</title>
        <style>body {padding: 30px;}</style>
    </head>
    <body>
        <h1><%= @player %>のメニュー</h1>
        <p><a href="/walk">あるく</a></p>
        <p><a href="/attack">たたかう</a></p>
    </body>
</html>
<!DOCTYPE html>
<html lang="ja">
    <head>
        <mata charset="utf-8">
        <title>Sinatra - paiza</title>
        <style>body {padding: 30px;}</style>
    </head>
    <body>
        <h1><%= @player %>のアクション</h1>
        <p><%= @message %></p>
        <p><a href="/">メニューに戻る</a></p>
    </body>
</html>
- [Sinatra: README (Japanese)]
http://www.sinatrarb.com/intro-ja.html
- [SinatraでとりあえずWebページを立ち上げてみる - Qiita]
http://qiita.com/k-ta-yamada/items/9e35c5f8b31862267e01
- [Sinatraの初心者向け入門 〜簡単にWebサイトを作れるRubyのフレームワーク〜 - ゴトーのブログ]
http://www.gamehuntblog.com/entry/sinatra-first-step
- [Sinatra 入門 - Qiita]
http://qiita.com/kimioka0/items/751e460cbb59c70379c6
- [Sinatraであそぶ | キャスレーコンサルティング 技術ブログ]
http://www.casleyconsulting.co.jp/blog-engineer/ruby/sinatra%E3%81%A7%E3%81%82%E3%81%9D%E3%81%B6/
- [はじめてのSinatra - Qiita]
https://qiita.com/ms2sato/items/7c07b2079b48c49fad2a
- [Rubyist Magazine - Sinatra 再入門、 Padrino / Rack / その先の何か]
http://magazine.rubyist.net/?0036-SinatraReintroduction