2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on...

214
Yuichiro MASUI <[email protected]> Railsチュートリアル ToDoを作りながら学ぶ

description

 

Transcript of 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on...

Page 1: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Yuichiro MASUI <[email protected]>

RailsチュートリアルToDoを作りながら学ぶ

Page 2: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

ゴール

Page 3: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Railsが分かったような気になる

Page 4: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

M,V,Cの繋がりを把握する

Page 5: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Railsでアプリを組んでみたくなる

Page 6: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Ruby on Railsって?

Page 7: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Rubyで書かれたフルスタックの

MVCフレームワーク

Page 8: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

理念

Page 9: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

その1

Page 10: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Conventionover

Configuration

Page 11: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

設定より規約

Page 12: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

デフォルトの動作が規約として多数盛り込まれてる

Page 13: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

JavaのフレームワークはXMLで設定する物が多い

Page 14: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

XMLの設定=コード

Page 15: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

設定ではコード量は減らない

Page 16: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

その2

Page 17: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

DRY

Page 18: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Don't Repeat Yourself

Page 19: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

同じ事は二度するな

Page 20: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

DBのO/Rマッピングを行う時

Page 21: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

DBのカラム名をコードに書くのはDRY違反

Page 22: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

DB変更したらコードの変更もいる

Page 23: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

バグの元

Page 24: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Railsならクラス作るだけ

Page 25: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

class User < ActiveRecord::Baseend

Page 26: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

テーブル定義はDBから参照する

Page 27: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

ただ、リレーションだけは設定する必要がある

Page 28: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

class User < ActiveRecord::Base has_many :booksend

Page 29: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

これだけでusersテーブルのマッピング終わり

Page 30: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Conventionover

Configuration

Page 31: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

設定より規約

Page 32: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

ActiveRecordの規約

Page 33: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

テーブル名の単数形のクラスでActiveRecord::Baseを継承するとO/Rマッパになる

Page 34: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

だからSQLでテーブル定義するだけで設定はいらない

Page 35: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

規約に沿わない場合は設定が必要

Page 36: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

class User < ActiveRecord::Base set_table_name 'user' set_primary_key 'pkey'end

Page 37: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

その3

Page 38: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

言語重要

Page 39: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Ruby

Page 40: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

歴史は長いがキラーアプリがなかった

Page 41: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

DHHがRubyを選んだ理由

Page 42: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Rubyは美しいコードを書くことができる,プログラマをハッピーにする言語だと

感じたのです。

ITProインタービューにて

Page 43: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

なぜ美しいと思うか

Page 44: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

思考との乖離が少ない

Page 45: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

頭で考えた物が作れる

Page 46: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

言語の柔軟性が非常に高い

Page 47: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

本当のオブジェクト指向、演算子のオーバーライド、オブジェクトへのメソッド追加...

Page 48: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

RailsではRubyを拡張してDSLっぽく使っている

Page 49: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

標準ライブラリなどにも手を入れまくり

Page 50: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Webに特化させてる故に書きやすい

Page 51: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

思いついたのを簡単にコードにできたらプログラムは

楽しい

Page 52: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

その4

Page 53: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

すぐ動く

Page 54: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

まず目の前に動く物があると作業がはかどる

Page 55: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

動くまで時間がかかるとテンションが続かない

Page 56: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

scaffold

Page 57: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

足場

Page 58: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

コントローラに1行書くだけでCRUD完成

Page 59: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Create - 作成Read - 表示Update - 更新Delete - 削除

Page 60: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

DBにテーブル作って空のモデルクラスつくって

コントローラにscaffoldって書くだけで

DB更新アプリ完成

Page 61: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

これが10分Railsムービーの内容

Page 62: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

あとは足場を頼りに骨組みを作っていけばいい

Page 63: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

scaffold以外に色々なジェネレータも出ている

Page 64: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

これらを使えば管理画面とかは

コード書かなくても行ける

Page 65: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

生成されたコードは勉強にも役に立つ

Page 66: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

その5

Page 67: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

豊富なプラグイン

Page 68: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

なんでもある

Page 69: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

画像アップならfile_columnタグはacts_as_taggable

などなど・・・

Page 70: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

日本語化はGetText-Ruby

Page 71: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

以上5つがRailsの生産性の高さを支えている

Page 72: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Railsのスローガン

Page 73: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

that's optimized for programmer happiness

and sustainable

Page 74: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

プログラマーの幸福と創造性の継続に最適化されたフレームワーク

Page 75: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

よく使われるシステム構成

Page 76: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Rails 1.2.3 ← 最新版Ruby 1.8.6 ← 最新版MySQL 5もしくは4

Page 77: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

PostgreSQLも使えるけどちょっと制約もある

Page 78: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

WebサーバはRuby+Cで書かれた

Mongrel

Page 79: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

apache+fastcgiとかlighttpd+fastcgiがあるけど、mongrelが

今のスタンダード

Page 80: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Railsのプロジェクトを始める

Page 81: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

> rails todo> cd todo

Page 82: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

なにもしないでとりあえずRails起動

Page 83: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

> ruby script/server↓

http://localhost:3000/

Page 84: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

http://localhost:3000/

Page 85: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

エクスプローラでtodoを開いてみよう

Page 86: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

publicの下がDocumentRoot

Page 87: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

appがプログラムdbがデータベースの情報

configが設定scriptが各種スクリプト

Page 88: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Railsプロジェクトでまずやること

Page 89: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

DBの設定

Page 90: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

config/database.ymlがデータベースの設定

Page 91: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

development: adapter: mysql database: todo_development username: root password: hostname: localhost

test: adapter: mysql database: todo_test username: root password: hostname: localhost

production: adapter: mysql database: todo_production username: root password: hostname: localhost

開発環境のDB設定

テスト環境のDB設定

製品環境のDB設定

Page 92: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Railsの3つの環境(実行モード)

Page 93: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

開発時のdevelopment  詳細なログやエラーメッセージ自動テスト実行test  UnitTestなどを実行実稼働のproduction  パフォーマンス優先

Page 94: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

development: ← Railsの環境 adapter: mysql ← 接続するDB database: todo_development ← DB名 username: root ← ユーザ名 password: ← パスワード hostname: localhost

Page 95: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

初期値ではプロジェクト名_development

プロジェクト名_testプロジェクト名_production

の3つのDBが必要

Page 96: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

ユーザもrootじゃヤバいので適当なものを作るtodo / todopass

Page 97: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

ユーザもrootじゃヤバいので適当なものを作るtodo / todopass

ダメな例

Page 98: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

development: ← 3つの環境とも adapter: mysql database: todo_development username: todo ← ユーザ名 password: todopass ← パスワード hostname: localhost encode: utf8 ← 追加

Page 99: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

phpMyAdminでテーブルとユーザを作り

権限を与える

Page 100: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

todo_developmentとtodo_testデータベースを作る

todoユーザも作りそれぞれにアクセス出来るように

権限付与する

Page 101: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

セッションをDBに保存するようにする

Page 102: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

PHPと同じようにセッションをDBやファイルに

保存する↓

初期値ではファイルなのでDBに変更する

Page 103: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

各種設定はconfig/environment.rb

Page 104: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

# 要求するRailsのバージョンRAILS_GEM_VERSION = '1.2.3' unless defined? RAILS_GEM_VERSION

# 起動ファイルrequire File.join(File.dirname(__FILE__), 'boot')

# Railsの初期設定Rails::Initializer.run do |config|

end

config/environment.rb

Page 105: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

# 要求するRailsのバージョンRAILS_GEM_VERSION = '1.2.3' unless defined? RAILS_GEM_VERSION

# 起動ファイルrequire File.join(File.dirname(__FILE__), 'boot')

# Railsの初期設定Rails::Initializer.run do |config| config.action_controller.session_store = :active_record_store ← コメントを消すend

config/environment.rb

Page 106: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

DBにセッション用のテーブルを作る

Page 107: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

rakeコマンド

Page 108: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Rakefileなどに書いてあるレシピを実行させる

Page 109: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

> rake -T> rake db:sessions:create

Page 110: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

db/migrate/001_add_sessions.rb

Page 111: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

class AddSessions < ActiveRecord::Migration def self.up create_table :sessions do |t| t.column :session_id, :string t.column :data, :text t.column :updated_at, :datetime end

add_index :sessions, :session_id add_index :sessions, :updated_at end

def self.down drop_table :sessions endend

db/migrate/001_add_sessions.rb

Page 112: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

> rake db:migrate

DBマイグレーション

Page 113: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

phpmyadminで確認しよう

↓http://localhost/mysql/

Page 114: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

rake db:migrateを実行するとdb/migrate/の中のupメソッドを順番に実行

Page 115: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

SQLじゃなくてRubyでテーブル生成

↓DBの構造をバージョン管理

Page 116: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Todoモデルを作る

Page 117: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

todoモデルはToDoの内容を書くdescriptionカラムだけ

Page 118: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

> ruby script/generate model todo description:text

Page 119: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

マイグレーションファイルも自動生成

db/migrate/002_create_todos.rb

Page 120: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

> rake db:migrate

Page 121: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Todoモデルクラスapp/models/todo.rb

Page 122: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

class Todo < ActiveRecord::Baseend

app/models/todo.rb

AR::Baseを継承してクラスを作るとクラス名の複数形のテーブルをO/Rマッピング

Page 123: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

APIリファレンスはhttp://railsapi.masuidrive.jp

Page 124: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

> ruby script/console>> t = Todo.new>> t.savephpMyAdminで確認>> t.description = ‘hoge’>> t.savephpMyAdminで確認

Page 125: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

phpMyAdminで見ると主キーに勝手にidが割り当てられてるRailsの規約

Page 126: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Todoクラスに定義しなくてもdescriptionカラムを扱える

Page 127: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

phpMyAdminで1行適当に追加

Page 128: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

>> Todo.find(:all)[#<Todo:0x26efa10 @attributes={"id"=>"1", "description"=>"hoge"}>, #<Todo:0x26ef970 @attributes={"id"=>"2", "description"=>"new todo"}>]

Page 129: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

>> t = Todo.find(2)>> t.description“new todo”>> t.description = “test!?”>> t.save

Page 130: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

これを操作するコードを書いてToDoアプリを作る

Page 131: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

ついにきましたscaffold

Page 132: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

モデルに対するCRUDを生成

Page 133: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Create - 生成Read - 表示Update - 更新Destroy - 削除

Page 134: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

> ruby script/generate scaffold todo todo

モデル名コントローラ名

Page 135: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

TodoモデルをCRUDするTodoコントローラ

Page 136: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

app/controllers/todo_controller.rbapp/views/todo/*.rhtml

Page 137: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Railsでコントローラにアクセスするには・・

↓http://サーバ/コントローラ名/アクション名/id

Page 138: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Railsでコントローラにアクセスするには・・

↓http://サーバ/コントローラ名/アクション名/id

省略可能

Page 139: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Railsでコントローラにアクセスするには・・

↓http://サーバ/コントローラ名/アクション名/id

省略可能Railsの規約

Page 140: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

ruby script/server

Page 141: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

http://localhost:3000/todo/

Page 142: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

ToDo完成

Page 143: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

と、いう訳にはいかない

Page 144: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

まずはscaffoldの流れを追おう

Page 145: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

http://localhost:3000/todo↓

Todoコントローラのindexアクションを実行

Page 146: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

コントローラのコードを追おう

Page 147: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”
Page 148: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

class TodoController < ApplicationController def index list render :action => 'list' end

# GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html) verify :method => :post, :only => [ :destroy, :create, :update ], :redirect_to => { :action => :list }

def list @todo_pages, @todos = paginate :todos, :per_page => 10 end

def show @todo = Todo.find(params[:id]) end

def new @todo = Todo.new end

def create @todo = Todo.new(params[:todo]) if @todo.save flash[:notice] = 'Todo was successfully created.' redirect_to :action => 'list' else render :action => 'new' end end

def edit @todo = Todo.find(params[:id]) end

def update @todo = Todo.find(params[:id]) if @todo.update_attributes(params[:todo]) flash[:notice] = 'Todo was successfully updated.' redirect_to :action => 'show', :id => @todo else render :action => 'edit' end end

def destroy Todo.find(params[:id]).destroy redirect_to :action => 'list' endend

Page 149: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

class TodoController < ApplicationController def index list render :action => 'list' end

# GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html) verify :method => :post, :only => [ :destroy, :create, :update ], :redirect_to => { :action => :list }

def list @todo_pages, @todos = paginate :todos, :per_page => 10 end

def show @todo = Todo.find(params[:id]) end

def new @todo = Todo.new end

def create @todo = Todo.new(params[:todo]) if @todo.save flash[:notice] = 'Todo was successfully created.' redirect_to :action => 'list' else render :action => 'new' end end

def edit @todo = Todo.find(params[:id]) end

def update @todo = Todo.find(params[:id]) if @todo.update_attributes(params[:todo]) flash[:notice] = 'Todo was successfully updated.' redirect_to :action => 'show', :id => @todo else render :action => 'edit' end end

def destroy Todo.find(params[:id]).destroy redirect_to :action => 'list' endend

短いと言っても長い

Page 150: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

順に追ってみましょう

Page 151: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

ブラウザRails

mongrel

Controller

Railsアプリの構造

Model

View

Page 152: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Controller

MVCの流れ

Model

View

Page 153: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Controller

MVCの流れ

Model

View

params[]URLやフォームで渡される値

Page 154: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Controller

MVCの流れ

Model

View

params[]URLやフォームで渡される値

URLからコントーラとアクションを決定

Page 155: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Controller

MVCの流れ

Model

View

Model.find,model.save

params[]URLやフォームで渡される値

URLからコントーラとアクションを決定

Page 156: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Controller

MVCの流れ

Model

View

Model.find,model.save

params[]URLやフォームで渡される値

インスタンス変数

URLからコントーラとアクションを決定

Page 157: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Controller

MVCの流れ

Model

View

Model.find,model.save

params[]URLやフォームで渡される値

インスタンス変数

アクション名のテンプレ

URLからコントーラとアクションを決定

Page 158: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

class TodoController < ApplicationController ...end

コントローラを定義するには、コントローラ名+ContollerのクラスをActionController::Baseを継承して作る。ApplicationControllerが、ActionController::Baseを継承している。Todoコントローラは、TodoControllerとなる。

Page 159: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

def index list render :action => 'list' end

アクションはその名前のpublicメソッドが呼び出される。その為indexアクションはindexメソッドが呼ばれる。ここでは、listメソッドを呼び、ビューをlistアクションのテンプレートを使って実行している。

Page 160: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

def list @todo_pages, @todos = paginate({:todos, :per_page => 10})end

第一引数で指定したモデルを:per_pageの件数だけ取得する。第一返値には、Paginator管理オブジェクト、第二返値に取得したモデルデータの配列が返ってくる。URLのパラメータでpageが指定されていた場合、page*per_page件目からのデータが取得される

Railsの便利機能

Page 161: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

def index list render :action => 'list' end

デフォルトでは、Viewでアクション名のテンプレートファイルが呼ばれるが、今回はrender命令を使いテンプレートファイルをlistに指定しているので、listアクションのテンプレートが実行される

Page 162: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

ビューはどこ?

Page 163: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

app/views/コントローラ名/アクション名.rhtml

Page 164: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

app/views/コントローラ名/アクション名.rhtml↓

app/views/todo/list.rhtml

Page 165: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

<h1>Listing todos</h1><table> <tr> <% for column in Todo.content_columns %> <th><%= column.human_name %></th> <% end %> </tr>

<% for todo in @todos %> <tr> <% for column in Todo.content_columns %> <td><%=h todo.send(column.name) %></td> <% end %> <td><%= link_to 'Show', :action => 'show', :id => todo %></td> <td><%= link_to 'Edit', :action => 'edit', :id => todo %></td> <td><%= link_to 'Destroy', { :action => 'destroy', :id => todo }, :confirm => 'Are you sure?', :method => :post %></td> </tr><% end %></table>

<%= link_to 'Previous page', { :page => @todo_pages.current.previous } if @todo_pages.current.previous %><%= link_to 'Next page', { :page => @todo_pages.current.next } if @todo_pages.current.next %> <br />

app/views/todo/list.rhtml

ブラウザのコードと見比べてみよう

Page 166: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

.rhtmlは、ERBと呼ばれる埋め込みRuby

<%~%>の部分が実行され、<%= ~%>は結果が表示される

Page 167: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

<h1>Listing todos</h1><table> <tr> <% for column in Todo.content_columns %> <th><%= column.human_name %></th> <% end %> </tr>

<% for todo in @todos %> <tr> <% for column in Todo.content_columns %> <td><%=h todo.send(column.name) %></td> <% end %> <td><%= link_to 'Show', :action => 'show', :id => todo %></td> <td><%= link_to 'Edit', :action => 'edit', :id => todo %></td> <td><%= link_to 'Destroy', { :action => 'destroy', :id => todo }, :confirm => 'Are you sure?', :method => :post %></td> </tr><% end %></table>

<%= link_to 'Previous page', { :page => @todo_pages.current.previous } if @todo_pages.current.previous %><%= link_to 'Next page', { :page => @todo_pages.current.next } if @todo_pages.current.next %> <br />

app/views/todo/list.rhtml

Todoモデルのカラム一覧を取得

paginateしたデータのループ

前後ページへのリンク

データ表示各ページへのリンク

Page 168: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

<h1>Listing todos</h1><table> <tr> <% for column in Todo.content_columns %> <th><%= column.human_name %></th> <% end %> </tr>

<% for todo in @todos %> <tr> <% for column in Todo.content_columns %> <td><%=h todo.send(column.name) %></td> <% end %> <td><%= link_to 'Show', :action => 'show', :id => todo %></td> <td><%= link_to 'Edit', :action => 'edit', :id => todo %></td> <td><%= link_to 'Destroy', { :action => 'destroy', :id => todo }, :confirm => 'Are you sure?', :method => :post %></td> </tr><% end %></table>

<%= link_to 'Previous page', { :page => @todo_pages.current.previous } if @todo_pages.current.previous %><%= link_to 'Next page', { :page => @todo_pages.current.next } if @todo_pages.current.next %> <br />

app/views/todo/list.rhtml

Todoモデルのカラム一覧を取得

paginateしたデータのループ

前後ページへのリンク

データ表示各ページへのリンク

リンクを生成するヘルパー

HTMLをエスケープするヘルパー

Page 169: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

Showのリンクは要らないので削ってしまおう。

ついでにメッセージも日本語に

Page 170: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

文字コードはUTF-8で改行コードは問わず

Page 171: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

<h1>ToDo一覧</h1><table> <tr> <% for column in Todo.content_columns %> <th><%= column.human_name %></th> <% end %> </tr>

<% for todo in @todos %> <tr> <% for column in Todo.content_columns %> <td><%=h todo.send(column.name) %></td> <% end %> <td><%= link_to 'Show', :action => 'show', :id => todo %></td> <td><%= link_to '編集', :action => 'edit', :id => todo %></td> <td><%= link_to '削除', { :action => 'destroy', :id => todo }, :confirm => 'ホントにいいの?', :method => :post %></td> </tr><% end %></table>

<%= link_to ’前のページ', { :page => @todo_pages.current.previous } if @todo_pages.current.previous %><%= link_to '次のページ', { :page => @todo_pages.current.next } if @todo_pages.current.next %> <br />

app/views/todo/list.rhtml

Page 172: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

でもソースにあった<head>とかは?

Page 173: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

アクションのテンプレの前にapp/views/layouts/コントローラ.rhtml

が呼び出される

Page 174: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

<!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="en" lang="en"><head> <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> <title>Todo: <%= controller.action_name %></title> <%= stylesheet_link_tag 'scaffold' %></head><body>

<p style="color: green"><%= flash[:notice] %></p>

<%= yield %>

</body></html>

app/views/layouts/todo.rhtml

ここにアクションのテンプレが展開される

Page 175: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

編集画面は?

Page 176: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

編集リンクを押すと↓

http://localhost:3000/todo/edit/1Todoコントローラのeditアクション、idは1

Page 177: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

def edit @todo = Todo.find(params[:id]) end

URLで指定されたidは、params[:id]に入っているのでこれを主キーにして検索し、その結果を@todoに代入@todoはインスタンス変数なので、そのままビューであるapp/views/todo/edit.rhtmlへ渡る

外部からのパラメータ

Page 178: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

<h1>Editing todo</h1>

<% form_tag :action => 'update', :id => @todo do %> <%= render :partial => 'form' %> <%= submit_tag 'Edit' %><% end %>

<%= link_to 'Show', :action => 'show', :id => @todo %> |<%= link_to 'Back', :action => 'list' %>

app/views/todo/edit.rhtml

他のテンプレファイルを読み込む:partialで指定された場合は_名前.rhtmlが読み込まれる

Page 179: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

<%= error_messages_for 'todo' %>

<!--[form:todo]--><p><label for="todo_description">Description</label><br/><%= text_area 'todo', 'description' %></p><!--[eoform:todo]-->

app/views/todo/_form.rhtml

@todoのエラーを表示

<textarea>を生成して値に@todo.descriptionをセット

Page 180: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

formの飛び先はupdateアクション

Page 181: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

def update

@todo = Todo.find(params[:id])

if @todo.update_attributes(params[:todo])

flash[:notice] = 'Todo was successfully updated.'

redirect_to :action => 'show', :id => @todo

else

render :action => 'edit'

end

end

URLのパラメータ

フォームのパラメータをモデルに保存

redirect先で表示するメッセージ

error_messages_forでエラーメッセージ表示

Page 182: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

CreateとDestroyは省略

Page 183: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

さてこのToDoにはなにが足りない?

Page 184: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

なにも書かなくてもToDoが登録できる

Page 185: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

入力値チェックを行うvalidate

Page 186: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

class Todo < ActiveRecord::Base validates_presence_of :descriptionend

app/models/todo.rb

descriptionを必須項目に

Page 187: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

saveするとエラーが起こり保存されなくなる

Page 188: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”
Page 189: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

validatorの種類

Page 190: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

validates_acceptance_of「この規約に同意しますか?」などのチェックボックスをチェック。これを指定すると、データベースには保存されない仮想的なカラムが自動生成されます。

例: validates_acceptance_of :kiyakuチェックボックスの値をkiyakuカラムに入れると、チェックされてない場合にはエラーが起こる

Page 191: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

validates_confirmation_of確認のために同じ値を入力させた場合の同定をチェック。passwordカラムを指定した場合、データベースには保存されないpassword_confirmationカラムができ、passwordカラムとpassword_confirmationカラムの同一性をチェックする。

例: validates_confirmation_of :emailemailカラムと、email_confimationカラムの値を比較して、不一致の場合にエラーが起こる

Page 192: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

validates_inclusion_of指定した値に含まれているかチェックvalidates_exclusion_ofとは逆の挙動

例: validates_inclusion_of :year, :in => 1900..2007yearカラムが1900~2007の間に入っていない場合にはエラーが起こる

例: validates_inclusion_of :sex, :in => ['female', 'male']sexカラムが'famale'でも'male'でもなかった場合には、エラーが起こる

Page 193: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

validates_exclusion_of指定した値に含まれて居ないかチェックvalidates_inclusion_ofとは逆の挙動

例: validates_exclusion_of :age, :0..19ageカラムが0~19の間に入っていた場合にエラーが起こる

Page 194: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

validates_format_of正規表現で指定した書式でチェック

例: validates_format_of :zip, :with => /^\d{3}-\d{4}$/zipカラムが郵便番号のフォーマットに合っていない場合にエラーが起こる

Page 195: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

validates_length_ofvalidates_size_of入力した文字数をチェック。日本語などもバイト数ではなく文字数でチェックされます。

例: validates_length_of :phone, :in => 9..11phoneカラムの桁数が9~11桁にない場合にエラーが起こる

Page 196: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

validates_numericality_of入力した文字列が、数字かチェック

例: validates_numericality_of :pricepriceカラムに数字以外の物が入っていた場合にはエラーが起こる

例: validates_numericality_of :num, :only_integer => truenumカラムに整数以外の物が入っていた場合にはエラーが起こる

Page 197: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

validates_presence_of入力されているかチェック

例: validates_presence_of :mailmailカラムに何も入力されていない場合にはエラーが起こる

Page 198: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

validates_uniqueness_ofデータベース内で重複していないかチェック

例: validates_uniqueness_of :mailmailカラムの値が、既にデータベースに登録されている場合にはエラーが起こる

Page 199: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

これらをモデルに加えるだけで入力チェックができる

Page 200: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

値チェックはモデルの仕事コントローラに書いていませんか?

Page 201: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

エラーメッセージが英語・・・

Page 202: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

多言語化ライブラリRuby-GetText

Page 203: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

RubyGemsで配布PHPのPEARや

PerlのCPANの様なもの

Page 204: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

> gem install gettext 1. gettext 1.10.0 (ruby) 2. gettext 1.10.0 (mswin32)~ 中略 ~ 6. Cancel installation> 1 ← 最新の(win32)の番号を入力

Page 205: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

config/environment.rbの最後に下記の一行を追加

↓require 'gettext/rails'

Page 206: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

app/controllers/application.rbにも下記の一行を追加

↓init_gettext "todo"

classの次の行

Page 207: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”
Page 208: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

優先順位とかカテゴリとか

Page 209: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

優先順位モデルやカテゴリモデルとToDoモデルを繋げる

belongs_tohas_many, has_one

Page 210: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

もっとAjaxバリバリに

Page 211: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

rjs

Page 212: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

続きはこれらの本で

日経Linuxでやってる私の連載もよろしく!

Page 213: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”

続きはこれらの本で

日経Linuxでやってる私の連載もよろしく!

リクエストがあれば続きもやります

Page 214: 2007/09/29 PHP to Rails - Webキャリアさん主催 ”PHPプログラマの為のRuby on Rails入門”