ruby&rails入門講座-2

75
Ruby勉強会@札幌 特別編 Ruby&Rails 入門講座 #2 Ruby札幌 http://jp.rubyist.net/?RubySapporo

Upload: koji-shimada

Post on 10-May-2015

5.522 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Ruby&Rails入門講座-2

Ruby勉強会@札幌 特別編

Ruby&Rails入門講座

#2Ruby札幌

http://jp.rubyist.net/?RubySapporo

Page 2: Ruby&Rails入門講座-2

アジェンダ-はじめに(5分)-自己紹介(35分)- irbを使ったRuby実習(20分)-休憩(5分)- Rails実習(110分)-おわりに (5分)

Page 3: Ruby&Rails入門講座-2

自己紹介Self-Introduction

Page 4: Ruby&Rails入門講座-2

irbを使ったRuby実習Practice ruby by using irb

Page 5: Ruby&Rails入門講座-2

文字列

s=”I love ruby”s.upcases.downcases << “, hello!”value = 123puts “value is #{value}”

Page 6: Ruby&Rails入門講座-2

日付

p t = Time.nowt.yeart.sect.to_st.to_a

Page 7: Ruby&Rails入門講座-2

日付

p d = Date.todaydd.to_s(d-7).to_s(d+30).to_s

Page 8: Ruby&Rails入門講座-2

配列

a = [30,100,50,80,79,40,95]p a.sortp a.reject{ |x| x < 90}p a << 80p a << 50

Page 9: Ruby&Rails入門講座-2

配列

p a.uniqa.shift p aa.popp a

Page 10: Ruby&Rails入門講座-2

ハッシュ

h = {“apple” => 150, “banana” => 300, “lemon” => 300}h[‘apple’]h.key?(‘orange’)

Page 11: Ruby&Rails入門講座-2

ハッシュ

h.store(‘orange’, 200)p hh.reject!{ |key, value| key == “banana”}h.to_a

Page 12: Ruby&Rails入門講座-2

その他

o = Object.newo.methods.sortDir::pwdDir::mkdir(Dir::pwd << “/lesson”)Dir::chdir(“lesson”)

Page 13: Ruby&Rails入門講座-2

その他Dir::entries(Dir::pwd)Dir[“*”]Dir[“**”]Dir[“**/*.rb”]foo = File.open(“foo.txt”, ‘w’)foo.puts afoo.close

Page 14: Ruby&Rails入門講座-2

休憩break time

Page 15: Ruby&Rails入門講座-2

RailsチュートリアルPractice rails

Page 16: Ruby&Rails入門講座-2

ここからはmasuidriveさんの資料で

Page 17: Ruby&Rails入門講座-2

ここからはオリジナル

Page 18: Ruby&Rails入門講座-2

このToDoに足りないもの

Page 19: Ruby&Rails入門講座-2

それっぽいToDoリスト画面を作ってみる

Page 20: Ruby&Rails入門講座-2

ToDoリスト用のビューとしてapp/views/todo/task.rhtml

を新規作成

Page 21: Ruby&Rails入門講座-2

リスト表示させてみる

Page 22: Ruby&Rails入門講座-2

<h1>やることリスト</h1> <ul class=”list”> <% @items.each do |item| %> <li> <%=h item.description %> </li> <% end %> </ul>

app/views/todo/task.rhtml

Page 24: Ruby&Rails入門講座-2

これだけだと動かない

Page 25: Ruby&Rails入門講座-2

コントローラにメソッドを追加する必要がある

Page 26: Ruby&Rails入門講座-2

def task @items = Todo.find(:all) end

taskアクションを行うためにtaskメソッドを定義し、リスト表示に使用する@itemsにTodosテーブルから全てのデータを取得し設定

Page 28: Ruby&Rails入門講座-2

きちんと表示されましたか?

Page 29: Ruby&Rails入門講座-2

なんだか味気ない

Page 30: Ruby&Rails入門講座-2

ToDoアプリなので完了チェックがしたい

Page 31: Ruby&Rails入門講座-2

done(ダーンと読みます)

Page 32: Ruby&Rails入門講座-2

> ruby script/generate migration add_done_to_todos

Page 33: Ruby&Rails入門講座-2

マイグレーションファイルの生成 db/migrate/

00X_add_done_to_todos.rb

Page 34: Ruby&Rails入門講座-2

class AddDoneToTodos < ActiveRecord::Migration def self.up add_column :todos, :done, :boolean, :default => false end

def self.down remove_column :todos, :done endend

db/migrate/00X_add_done_to_todos.rb

Page 35: Ruby&Rails入門講座-2

> rake db:migrate

Page 36: Ruby&Rails入門講座-2

> ruby script/server↓

http://localhost:3000/todo/

Page 37: Ruby&Rails入門講座-2

ToDoリスト画面からdoneの状態を見れるようにする

Page 38: Ruby&Rails入門講座-2

app/views/todo/task.rhtml

<h1>やることリスト</h1> <ul class=”list”> <% @items.each do |item| %> <li> <%= check_box_tag("check", 0, item.done) %> <%=h item.description %> </li> <% end %> </ul>

Page 39: Ruby&Rails入門講座-2

ToDoリスト画面から編集も出来るようにしてみる

Page 40: Ruby&Rails入門講座-2

app/views/todo/task.rhtml

<h1>やることリスト</h1> <ul class=”list”> <% @items.each do |item| %> <li> <%= check_box_tag("check", 0, item.done %> <%=h item.description %> <%= link_to("編集", :action => "edit", :id => item.id) %> </li> <% end %> </ul>

Page 41: Ruby&Rails入門講座-2

ToDoリスト画面から削除も出来るようにしてみる

Page 42: Ruby&Rails入門講座-2

app/views/todo/task.rhtml <h1>やることリスト</h1> <ul class=”list”> <% @items.each do |item| %> <li> <%= check_box_tag("check", 0, item.done %> <%=h item.description %> <%= link_to("編集", :action => "edit", :id => item.id) %> <%= link_to("削除", {:action => "destroy", :id => item.id}, :confirm => "ホントウに?", :method :post) %> </li> <% end %> </ul>

Page 43: Ruby&Rails入門講座-2

それぞれのアクションの戻り先をToDoリスト画面にする

Page 44: Ruby&Rails入門講座-2

redirect_to :action => 'show'↓

redirect_to :action => 'task'

app/controllers/todo_controller.rbupdateメソッド内

Page 45: Ruby&Rails入門講座-2

<%= link_to 'Back', :action => 'list' %>↓

<%= link_to 'Back', :action => 'task' %>

app/views/todo/edit.rhtml

Page 46: Ruby&Rails入門講座-2

ここまで来たらToDoリスト画面から登録もしたい

Page 47: Ruby&Rails入門講座-2

app/views/todo/task.rhtml <h1>やることリスト</h1> <ul class=”list”> <% @items.each do |item| %> <li> <%= check_box_tag("check", 0, item.done %> <%=h item.description %> <%= link_to("編集", :action => "edit", :id => item.id) %> <%= link_to("削除", {:action => "destroy", :id => item.id}, :confirm => "ホントウに?", :method :post) %> </li> <% end %></ul>

<%= form_tag(:action => "create") do %> <%= text_field 'todo', 'description' %> <%= submit_tag "登録" %><%= end %>

Page 48: Ruby&Rails入門講座-2

完了のチェックボックスも同期させたい

Page 49: Ruby&Rails入門講座-2

app/views/todo/task.rhtml <h1>やることリスト</h1> <ul class=”list”> <% @items.each do |item| %> <li> <%= check_box_tag("check", 0, item.done, :onclick => "document.location.href='/todo/toggle_check/#{item.id}'") %> <%=h item.description %> <%= link_to("編集", :action => "edit", :id => item.id) %> <%= link_to("削除", {:action => "destroy", :id => item.id}, :confirm => "ホントウに?", :method :post) %> </li> <% end %></ul>

Page 50: Ruby&Rails入門講座-2

def toggle_check Todo.find(params[:id]).toggle!(:done) redirect_to :action => 'task' end

app/controllers/todo_controller.rb

Page 51: Ruby&Rails入門講座-2

だいぶToDoアプリらしくなった

Page 52: Ruby&Rails入門講座-2

けどまだ見た目が味気ない

Page 53: Ruby&Rails入門講座-2

CSSを変えてみる

Page 54: Ruby&Rails入門講座-2

CSSの置き場 public/stylesheets/

Page 55: Ruby&Rails入門講座-2

イメージの置き場 public/images/

Page 56: Ruby&Rails入門講座-2

CSSを読み込むようにする app/views/layout/todo.rhtml

Page 57: Ruby&Rails入門講座-2

<head> <meta http-equiv="content-type" content="text/html;charset=UTF-8" /><title>Todo: <%= controller.action_name %></title><%= stylesheet_link_tag 'scaffold' %><%= stylesheet_link_tag 'simplicity_two_point_oh' %></head>

app/views/layout/todo.rhtml

Page 58: Ruby&Rails入門講座-2

CSSの内容にあわせてビューをいじる

Page 59: Ruby&Rails入門講座-2

app/views/layout/todo.rhtml<div id="window"> <div id="container"> <div class="navigation"> <ul> <li class="active"><span>ToDo</span></li> </ul> </div> <div class="main"> <div class="outer-prettification"> <div class="inner-prettification"> <%= yield %> <div class="footer"> <p><a href="#">example.com</a></p> </div> </div> </div> </div> </div></div>

Page 60: Ruby&Rails入門講座-2

<div class="header"> <h1 class="title"><a href="#">やることリスト</a></h1></div><div class="contents"> <p style="color: green"><%= flash[:notice] %></p> <ul class="list"> ... </ul> <div class="contact"> <%= form_tag (:action => "create") do %> ... <%= end %> </div></div>

app/views/todo/task.rhtml

Page 61: Ruby&Rails入門講座-2

app/views/todo/edit.rhtml<div class="header"> <h1 class="title"><a href="#">やること編集</a></h1></div><div class="contents"> <p style="color: green"><%= flash[:notice] %></p> <div class="contact"> <% form_tag :action => 'update', :id => @todo do %> ... <% end %> <%= link_to 'Show', :action => 'show', :id => @todo %> | <%= link_to 'Back', :action => 'task' %> </div></div>

Page 62: Ruby&Rails入門講座-2

とりあえずToDo完成

Page 63: Ruby&Rails入門講座-2

次にやるとしたら?

Page 64: Ruby&Rails入門講座-2

script.aculo.usを使ってインライン編集とか

Page 65: Ruby&Rails入門講座-2

AAAを使ってユーザ別のToDo管理とか

Page 66: Ruby&Rails入門講座-2

acts_as_taggableを使ってタグ付けしてみるとか

Page 67: Ruby&Rails入門講座-2

せっかくタブがあるのでカテゴリ別にしてみるとか

Page 68: Ruby&Rails入門講座-2

いろいろチャレンジしてみましょう

Page 69: Ruby&Rails入門講座-2

Q&A

Page 70: Ruby&Rails入門講座-2

予告

Page 71: Ruby&Rails入門講座-2

開発集会@札幌 第1回✓ 時:2007年10月20日(土),21日(日)✓ 場所:北海道情報大学札幌サテライト✓ 参加費:無料 ✓ 内容:✓ 開発や勉強に集中できる場の提供✓ 好きなときにきて、好きなときに帰っておk✓ Ruby本も各種取り揃えておくので是非

Page 72: Ruby&Rails入門講座-2

RubySapporoNight vol.3✓ 時:2007年10月31日(水)✓ 場所:アップルストア札幌✓ 参加費:無料 ✓ 内容:✓ 鋭意企画中✓ RailsとかRuby-Growlとか✓ お友達をつれて是非

Page 73: Ruby&Rails入門講座-2

Ruby勉強会@札幌 第6回

✓ 時:2007年??月??日(?)✓ 場所:北海道情報大学札幌サテライト✓ 参加費:無料 ✓ 内容:✓ ??✓ ??✓ ??

Page 74: Ruby&Rails入門講座-2

Ruby札幌をどうぞ宜しくお願いします

Page 75: Ruby&Rails入門講座-2

ご参加ありがとうございました