演習課題「特定のジョブの詳細画面を作る」
右の環境には、SinatraでMySQLからjobsテーブルの特定ジョブの情報を表示するプログラムが作成してあります。このプログラムは、「/jobs/id」というルートで、以下のカラムを表示します。
job_profileテンプレートを修正して、箇条書き(ulタグ、liタグ)で表示してください。
- id
- job_name
- vitality
- strength
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
#08:特定のプレイヤーの詳細画面を作る
このチャプターでは、Sinatraを使って、簡単なWebアプリケーションを作ります。前回のチャプターの続きとして、RPGのプレイヤー一覧から各プレイヤーの詳細情報を表示する画面を作ります。
# 特定のプレイヤーを表示する
require 'mysql2'
require 'sinatra'
require 'sinatra/reloader'
require 'erb'
client = Mysql2::Client.new(:host => "localhost", :username => "root", :database => "mydb")
get '/' do
sql = "SELECT players.id, name, level, job_name FROM players LEFT JOIN jobs ON jobs.id = players.job_id"
statement = client.prepare(sql)
@results = statement.execute()
erb :index
end
get '/show/:id' do
@message = "Hello player #{params['id']}"
sql = "SELECT players.id, name, level, job_name FROM players LEFT JOIN jobs ON jobs.id = players.job_id WHERE players.id = ?"
statement = client.prepare(sql)
@results = statement.execute(params['id'])
erb :profile
end
<h1><%= @message %></h1>
<% player = @results.first %>
<ul>
<li>名前:<%= player["name"] %></li>
<li>レベル:<%= player["level"] %></li>
<li>ジョブ:<%= player["job_name"] %></li>
</ul>
<p><a href="/">戻る</a></p>
<h1>Players index</h1>
<table>
<% @results.each do |row| %>
<tr>
<td><%= row["id"] %></td>
<td><%= row["name"] %></td>
<td><%= row["level"] %></td>
<td><%= row["job_name"] %></td>
<td><a href='/show/<%= row["id"] %>'>表示</a></td>
</tr>
<% end %>
</table>
- [Ruby mysql2のメモ - かもメモ]
http://chaika.hatenablog.com/entry/2016/04/01/083000
- [ruby から mysql へアクセスする - KRAKENBEAL RECORDS]
http://krakenbeal.blogspot.jp/2013/02/ruby-mysql.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