Ruby on Railsで一行掲示板を作成する(Ruby on Rails 1.2対応版)

以前に書いた [Ruby on Railsで一行掲示板を作成する]( Ruby on Railsで一行掲示板を作成する) をRuby on Rails 1.2用に書き直しました。

データベースの作成

MySQLを使用して、データベースとテーブルを作成する。

データベースを作成。

mysqladmin -uroot create bbs_development
mysqladmin -uroot create bbs_test
mysqladmin -uroot create bbs_production

ここでテーブルは作成しない。

プロジェクトの作成

C:\railsディレクトリを作成する。
C:\railsディレクトリに移動して、次のコマンドを実行する。

rails bbs
cd bbs

C:\rails\bbs\config\database.ymlのusernameやpasswordを編集する。
MySQLのバージョンが4.0以前の場合は「encoding: utf8」を削除する。

development:
  adapter: mysql
  database: bbs_development
  username: root
  password:
  host: localhost
  encoding: utf8

test:
  adapter: mysql
  database: bbs_test
  username: root
  password:
  host: localhost
  encoding: utf8

production:
  adapter: mysql
  database: bbs_production
  username: root
  password:
  host: localhost
  encoding: utf8

モデルとコントローラを作成する。

ruby script/generate model item  
ruby script/generate controller item

テーブルの設計

C:\rails\bbs\db\migrate\001_create_items.rb を編集する

class CreateItems < ActiveRecord::Migration
  def self.up
    create_table :items do |t|
      t.column :name, :text #投稿者名
      t.column :body, :text #本文
    end
  end

  def self.down
    drop_table :items
  end
end

マイグレーションの実行

rake db:migrate

itemsテーブルが作成される。

エラーが発生した場合は、

  • db/migrate/001_create_items.rbを確認する。
  • config/database.ymlを確認する。

コーディング

C:\rails\bbs\app\views\item\index.rhtml ファイルを作成する。
ファイルの文字コードはUTF-8。

index.rhtmlでは、投稿された内容が配列で @items に入り、 @items.each do ~ end で、投稿内容を出力する。
フォームで入力された内容は、コントローラの add_item メソッドで処理をする。

<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja-JP" lang="ja-JP">
<head>
  <title>一行掲示板</title>
</head>
<body>
  <h1>一行掲示板</h1>
  <dl>
<% @items.each do |@item| %>
    <dt><%=h @item.name %></dt>
    <dd><%=h @item.body %></dd>
<% end %>
  </dl>
  <hr />
  <%= form_tag :action=>"add_item" %>
    名前:<%= text_field("new_item", "name", "size"=>10) %><br />
    本文:<%= text_field("new_item", "body", "size"=>60) %><br />
    <input type="submit" value="Add" />
  </form>
</body>
</html>

C:\rails\bbs\app\controllers\item_controller.rb を開く。

class ItemController < ApplicationController

  def index
    @items = Item.find(:all)
  end

  def add_item
    item = Item.new
    item.attributes = @params["new_item"]
    if item.save
      redirect_to(:action => "index")
    else
      render_text "Couldn't add new item"
    end
  end
end

Webサーバーを起動する。

ruby script/server

http://localhost:3000/item/にアクセスする。
掲示板が表示されたら、成功。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください