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

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

作成開始!

まずは土台となるアプリケーション作成

rails new bbs -T -J -d mysql

作成されたディレクトリに移動

cd bbs

データベースの設定

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)
にアクセスする。

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

この記事をシェアする

コメントを残す

メールアドレスが公開されることはありません。

ABOUTこの記事をかいた人

株とブログとプログラミングで生活している東京在住のフリーランス。

このブログには毎月15万人くらい訪れます。

田舎で生まれ、上京して7年。大手SIer → ウェブ系ベンチャー → スタートアップ創業期を経験したのちフリーランスに。

お金持ちにならなくていいから好きなことをしたい。好きなことを続けるためにお金が欲しい。