Ruby on Rails 3 でアプリケーションを作成する(scaffold を使わずに)

Ruby on Rails 3 で掲示板を作成しながら手順をならべていきます。

個人的なメモ。

 

 

データベースの設定

vi config/database.yml

 

passのところにMySQLのパスワードを入力(3箇所)。

rake db:create

 

サーバ起動と動作確認

rails server

http://IPアドレス:3000/

にアクセスし、「Welcome aboard」が表示されることを確認。

 

「About your application’s environment」をクリックすると、環境が表示される(エラーがでていないこと)。

 

プログラム作成

コントローラクラスの作成

rails generate controller messages

 

プログラムを書いていく

コントローラクラスの編集

vi app/controllers/messages_controller.rb

# coding: utf-8
class MessagesController < ApplicationController
def index
@msg = 'こんにちは!'
end
end

 

テンプレートファイルの作成

vi app/views/messages/index.html.erb

<%= @msg %>

 

ルーティング設定の定義

vi config/routes.rb

match ':controller(/:action(/:id(.:format)))'

 

http://IPアドレス:3000/messages(/index)

にアクセスすると、「こんにちは!」と表示されることが確認できる。

 

モデルの作成

モデルクラスの作成

rails generate model message name:string email:string title:string body:text image:string password:string
列名 データ型 概要
name string 名前
email string メールアドレス
title string タイトル
body text 本文
image string イメージファイルのディレクトリ
password string 編集/削除キー

 

マイグレーションファイルの実行

rake db:migrate

 

テストデータの投入

vi test/fixtures/messages.yml

one:
name: 上田次郎
email: ueda@trick.com
title: トリック劇場版
body: テレビで初公開!
image: test/image1.gif
password: pass
two:
name: 山田奈緒子
email: yamada@trick.com
title: 決めゼリフ
body: まるっとお見通しだ!
image: test/image2.gif
password: testpass

 

そして以下のコマンドで、テーブルにデータが展開される。

rake db:fixtures:load FIXTURES=messages.yml

 

データベースクライアントを起動し、データが入っているか確認。

rails dbconsole
select * from messages;

 

messagesテーブルの内容が表示される。

exit

 

indexファイルを書き換える

messageテーブルの内容を表示させるようにする

vi app/controllers/messages_controller.rb

# coding: utf-8
class MessagesController < ApplicationController
def index
@messages = Message.all
end
end

 

vi app/views/messages/index.html.erb

<table>
<tr>
<th>名前</th><th>メールアドレス</th><th>タイトル</th>    <th>本文</th><th>イメージ</th><th>編集/削除キー</th>
</tr>
<% @messages.each do |message| %>
<tr>
<td><%= message.name %></td>
<td><%= message.email %></td>
<td><%= message.title %></td>
<td><%= message.body %></td>
<td><%= message.image %></td>
<td><%= message.password %></td>
</tr>
<% end %>
</table>

 

ブラウザで確認

http://IPアドレス:3000/messages(/index)

にアクセスする。

 

テーブルの内容が表示された。