Ruby on Railsの演習

最新LLフレームワークエクスプローラ Ruby on Rails, Maple/Ethna(PHP),Catalyst(Perl),TurboGears(Python) 5大フレームワーク徹底攻略を元に

Project作成

名前は変えた

% rails ror_bookmark

DBの作成

bmuserも作られる

% mysql -u root -p
Enter password:
mysql > CREATE DATABASE ror_bookmark DEFAULT CHARACTER SET utf8;
mysql > GRANT ALL PRIVILEGES ON ror_bookmark.* TO bmuser@localhost IDENTIFIED BY
 'bmuser';
mysql > \q
% mysql -u bmuser -p -D ror_bookmark
Enter password:
mysql> CREATE TABLE items ( id INTEGER auto_increment, url VARCHAR(255), title 
VARCHAR(255), description TEXT, PRIMARY KEY(id));
mysql > \q

P.34のsqlだけどそのままだとテーブルが作れなかった.PRIMARY KEY(id)を入れたら動いた

database.ymlの設定

変更の該当部分のみ

development:
  adapter: mysql
  database: ror_bookmark
  username: bmuser
  password: bmuser
  host: localhost

Model, Controllerの作成

scriptでさくっと.使うものが決まってるからあまり考えなくてもいい

% ruby ./script/generate model Item
% ruby ./script/generate controller Item

app/controllers/item_controller.rbを編集

testメソッド追加

class ItemController < ApplicationController
  def test
    render :text => 'hello rails'
  end
end

http://localhost:3000/item/testにアクセスして確認

scaffold

app/controllers/item_controller.rbを編集.1行追加のみ

class ItemController < ApplicationController
  scaffold :item
end

http://localhost:3000/item/にアクセスして確認.普通にできあがってる

日本語対応

config/environment.rbの先頭行に「$KCODE = 'u'」を追加

app/controllers/application.rbを編集

class ApplicationController < ActionController::Base
  before_filter :set_charset

  protected
  def set_charset
    @headers["Content-Type"] = "text/html; charset=utf-8"
  end
end

scaffoldの作成

% ruby ./script/generate scaffold Item Item

view

見た目修正.app/views/Item/list.rhtmlを編集

validate

app/views/Item/list.rhtml修正
app/controllers/item_controller.rbのlistメソッド修正