Rails勉強会@東京第36回 Scaffoldの半歩先へ by Yuumi3
Rails勉強会@東京第36回
「Scaffoldの半歩先へ」記録
Ruby on Rails入門(初心者向け)
TODO管理アプリケーションの作成
TODO管理アプリケーションをRailsで作成する。
テーブル構造は次の表の通りで、
----------------- | todo | |---------------- | due | Date | | task | String | ----------------
データは期日順に並べる
# railsコマンドのヘルプを表示 rails --help # todolistアプリケーションのひな形を生成 rails todolist # 生成されたひな形にカレントディレクトリを移動 cd todolist # script/generateは何かを生成するコマンド ruby script/generate --help # => Installed Generators # => Builtin: controller, integration_test, mailer, migration, model, observer, # => performance_test, plugin, resource, scaffold, session_migration # scaffold ruby script/generate scaffold --help # => Usage: script/generate scaffold ModelName [field:type, field:type] # todoのモデルと、ビュー、コントローラーなど一式を生成 # date、stringは、データベースの型でも、Rubyの型でもなく、Rails独自のもの ruby script/generate scaffold todo due:date task:string # 特に重要なファイル。データベースの管理をするファイル。 # テーブルの定義が記述されている。 less db/migrate/20081221044423_create_todos.rb # => class CreateTodos < ActiveRecord::Migration # => def self.up # => create_table :todos do |t| # => t.date :due # => t.string :task # => # => t.timestamps # => end # => end # => # => def self.down # => drop_table :todos # => end # => end # rakeコマンドでビルドする rake --help # Rakefileの中身を確認 less Rakefile # migrateの設定でデータベース作成 rake db:migrate # データベースが生成された sqlite3 db/development.sqlite3 # 生成したアプリケーションを実行 ruby script/server --help ruby script/server
実行したアプリケーションには、未設定状態ではポート3000でアクセスできる
http://localhost:3000/
http://localhost:3000/todos
データベースを変更するには、scaffold時に -r オプションを使う
もしくは、設定ファイルを弄る。
vi config/database.yml
ディレクトリ構造
+- app | | プログラム | +- controlers | | コントローラ | +- helpers | | ヘルパー、表示の補助 | +- models | | モデル | +- views | | 表示テンプレート | +- layouts | | 表示の枠組み | +- todos | edit.html.erb index.html.erb new.html.erb show.html.erb | モデル単位のテンプレート | +- config | 設定 +- db | データベース +- public | HTML CSS JS +- test | テストコード +- vendor | プラグイン | ログインなど +- log | ログ +- doc ドキュメント
index.html.rbの中身
<h1>Listing todos</h1> <table> <tr> <th>Due</th> <th>Task</th> </tr> <% for todo in @todos %> <tr> <td><%=h todo.due %></td> <td><%=h todo.task %></td> <td><%= link_to 'Show', todo %></td> <td><%= link_to 'Edit', edit_todo_path(todo) %></td> <td><%= link_to 'Destroy', todo, :confirm => 'Are you sure?', :method => :delete %></td> </tr> <% end %> </table> <br /> <%= link_to 'New todo', new_todo_path %>
その他
- Railsはデータベースを作る際、IDというカラムを必ず作る。
- http://localhost:3000/todos/4.xml のようにURLを叩くと、Render XMLのデータを見られる。
- flashはレスポンスまでのスコープ
flash[:notice] = 'Todo was successfully created.'
- アプリケーション全体のビューのレイアウトを管理
app/views/layouts/todos.html.erb
一覧の並び順の変更
vi todos_controller.rb
def indexでオーダーを設定
@todos = Todo.find(:all, :order => 'due')
inspectでデバッグ
a = [1,2,3] puts "#{a}" # 詳細なメッセージを表示 puts "#{a.inspect}"
Railsの実行環境
FastCGI、WEBrick、Passengerなどを使って公開。
現在、主流の構成は、
Web ブラウザ ↓ Apache mod_proxy_balancer ↓ Rails Mogrel ↓ RDB
帳票っぽい画面の作り方
scaffoldで原型作って、余分なファイルを消す
もしくは、generateでつくる
script/generate controller view sho
共通するロジック
ヘルパーはビューに組み込まれるので、、、
application_helper.rb todo_helper.rb view_helper.rb
他
他にもいろいろあったけど、メモし忘れたり、まとめきれなかったり