はじめる!Rails3(1)6.4演習問題答え
1. rails generate model コマンドを使って、Book モデルを生成してください。ただし、
books テーブルはtitle(String), authors(String), publish_year(Integer), comment(Text),
checked_out(Boolean) という5 つのカラム(括弧内はデータ型)を持つものとします。
bookモデルを生成します。以下のコマンドshelfで行います。
>rails g model book title:string authors:string publish_year:integer comment:Text checked_out:boolean
マイグレーションを実行してください。
>rake db:migrate
シードデータを適宜作成し、データベースに投入してください。
シードデータを作成します。Db/seeds.rbを編集します。以下の編集は例です。
titles = [
"基礎ruby on rails",
"かんたんruby on railsでweb制作",
"ruby on rails開発",
"はじめるrails3",
"rails3 wataru"
]authors = [
"kuroda",
"tsutomu",
"oiax",
"kuroda tsutomu",
"opendream"
]publish_years = [
"2007",
"2008",
"2009",
"2010",
"2011"
]comment = "最高です" * 10
5.times do |n|
Book.create(:title => titles[n], :authors => authors[n],
:publish_year => publish_years[n], :comment => comment,
:checked_out => n < 1 )
end
次にシードデータを投入します。
>rake db:seed
はじめる!Rails3(1)5.8演習問題答え
5.8演習
1.books コントローラの骨格を作成してください。
booksコントローラーの骨格を作成します。まずshelfに移動しましょう。そして作成します。
>rails g controller books
2. /books という URL パスへのアクセスにより、 books#index アクションが実行されるように
リソースbooks を登録してください。
ルーティングを設定しbooks#indexをconfig/routes.rbを編集します
Shelf::Application.routes.draw do
resources :books
end
app/view/books/index.html.erbを作成し
<h1>一覧</h1>
これでhttp://localhost:3000/booksで表示されます。今回は/booksでの表示のためroot :toでは指定せずindex.htmlも削除しません
3.ブラウザのタイトルバーに「蔵書管理アプリケーションShelf」と表示されるようにレイアウトを修正してください。
タイトルを付けます。
App/view/layout/application.html.erbの
<!DOCTYPE html> <html> <head> <title>蔵書管理アプリケーションshelf</title> <%= stylesheet_link_tag :all %> <%= javascript_include_tag :defaults %> <%= csrf_meta_tag %> </head> <body> <div id="wrapper"> <%= render "shared/header" %> <div id="contents"> <%= yield %> </div> <%= render "shared/footer" %> </div> </body> </html>
4.レイアウトにヘッダとフッタを埋め込んでください。ヘッダとフッタは自由にデザインして
構いません。
shardディレクトリー下に_header.html.erbと_footer.html.erbを作成し中にフッターヘッダーを作ります。フッターヘッダーは真似をして以下のように作りました。画像はnetbeansで既存のものを使ってみましたので大きさなど少し問題ありますが、演習為我慢します。表示できるかどうかが大事ですし・・・
<div id="footer"> <strong>books</strong> - Powered by <strong>Ruby on Rails 3</strong> </div> <div id="header"> <%= image_tag "rails.png", :size => "131x65", :alt => "サイトロゴ" %> </div>
5.新規スタイルシートlayout.css を適宜作成し、正しいディレクトリに設置してください。
Public/stylesheetsにlayout.cssを作成してスタイルを作成します。今回はテキストと同じレイアウトを使用しました。
body { background-color: #5555be; } div#wrapper { width: 600px; margin: 10px auto; background-color: #fff; } div#header, div#footer { color: #666; margin: 5px; padding: 5px; } div#footer { text-align: center; } div#contents { background-color: #fff; color: #000; margin: 5px; padding: 5px; border: solid 1px #ccc; }
はじめる!Rails3(1)4.5演習問題答え
.5演習
1.now アクションを持つ clock コントローラを生成してください。
4章で作成したdummyアプリケーションに移動します。
>cd dummy
nowアクションを持つclockコントローラーを作成します。
>rails g controller clock now
2.ブラウザでhttp://localhost:3000/clock/now にアクセスすると、現在時刻が表示されるようにしてください。ただし、現在時刻を取得するにはTime.current を使用してください。
Time.currentを使って現在時刻を表示します。
App/controller/clock_controller.rbを以下のように修正します
class ClockController < ApplicationController
def now
@now = Time.current
end
end
次に現在の時刻を表示します。
App/view/clock/now.html.erbを以下のように編集します。
<h1>現在の時刻<%= @now %></h1>
3.設問 2 で作った Web ページの URL をhttp://localhost:3000/clock.html に変更して
ください。
http://localhost:3000/clock.htmlで表示されるようにConfig/routes.rbを以下のように編集します
Dummy::Application.routes.draw do
get "clock.html" => "clock#now"
end
dummyアプリケーションを起動しhttp://localhost:3000/clock.htmlを開きます。
表示されればOKです。
Dummyアプリケーションを終了します。
はじめる!Rails3(1)3.6演習問題答え
さっそく始めました。著者に了解を得てここでは演習の答えを載せていきます。参考までにどうぞ!
3.6演習
私のOSはUbuntu10.10デスクトップ版です。
1. 作業ディレクトリに新規アプリケーションの骨格を生成してください。ただし、データベースは SQLite3 を使用するとします。
ここは3章でインストールしたのでそれを使って新しいアプリケーションを作ります。
>cd work
>rails new shelf
これでアプリケーションが作成できました。
2.アプリケーション Shelf を起動し、ブラウザで動作確認してください。
既存でsqlite3なのでそのまま起動します。
>rails s
http://localhost:3000へアクセスし確かめてみましょう。3章と同じ画面が出たらOKです。
3. アプリケーション Shelf を終了してください。
ctrl+cでアプリケーションを終了します。
ここはテキスト通りなので簡単ですね。さぁどんどん行きます!
勉強始めます!
最近人気のRuby on Rails。私もこのプログラムを勉強し幅を広げていこうかと思います。
注目したのは現在のバージョンで最も最新と思われる、テキスト「はじめる! Rails3(1)」です。
(1)とあるので続編などが出るのではないかと期待している。
詳しくはhttp://tatsu-zine.com/books/rails3 へ今すぐアクセス。
ここで私はこの中の演習を勉強していこうと思います。