読者です 読者をやめる 読者になる 読者になる

さかめも

株もやってるウェブエンジニア。月間80,000PV。田舎で生まれ、上京して7年。大手SIer→ウェブ系ベンチャー→フリーランス→スタートアップ創業期 を経験。お金持ちにならなくていいから好きなことをしたい。好きなことを続けるためにお金が欲しい。

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



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