rails初心者レッスン lesson2 3edition

15
Rails3 初心者レッスン by Minami.rb 第3版 Rails3.2 Lesson 2

Upload: satomi-tsujita

Post on 19-Jan-2015

640 views

Category:

Technology


3 download

DESCRIPTION

Minami.rb beginners lesson

TRANSCRIPT

Page 1: Rails初心者レッスン lesson2 3edition

Rails3 初心者レッスンby Minami.rb

第3版Rails3.2

Lesson 2

Page 2: Rails初心者レッスン lesson2 3edition

このレッスンでやること一覧1. Railsで何をする?どうしてRails?2. 作ってみよう事始め3. プロジェクトとテーブル4. Railsの役割分担5. Railsのディレクトリ構成6. scaffold(デフォルト)でのURL7. リレーションを考える8. 日本語対応9. 見た目をキレイに10.プラグインを使う11.ちょっとRubyに働いてもらう12.herokuに公開しよう

Page 3: Rails初心者レッスン lesson2 3edition

Lesson1の復習

使ったコマンド $ rails new プロジェクト名 $ rails generate scaffold テーブル名 カラム:データ型 $ rake db:migrate $ rails console または rails c $ rails server または rails s $ rails -h $ rails generate -h $ rake -T $ rake routes

Page 4: Rails初心者レッスン lesson2 3edition

scaffold(デフォルト)でのURLURLの基本構成

http://host/resources #action => index http://host/resources/new #action => new http://host/resources #action => create http://host/resources/id #action => show http://host/resources/id/edit #action => edit http://host/resources/id #action => update http://host/resources/id #action => destroyURLの確認

$ rake routes

Page 5: Rails初心者レッスン lesson2 3edition

URLとリレーションURL設定とmodel(リレーション)設定をそれぞれ行う

          app/models/以下に設定       config/routes.rbに設定

URL →http://host/(親)s/:(親)id/(子)s   config/routes.rbに以下の設定     resources :(親)s do     resources :(子)s     endmodel →app/models/(親).rb に以下の設定     has_many :(子)s    app/models/(子).rb に以下の設定     belongs_to :(親)

親 1 多 子

Page 6: Rails初心者レッスン lesson2 3edition

URL設定 config/routes.rb     resources :publishers do     resources :books     end

→ http://host/publishers/publisher_id/books $rake routesで確認してみよう

URL設定例

publisher 1 多 book

Page 7: Rails初心者レッスン lesson2 3edition

model(リレーション)設定例

model設定 app/models/publisher.rb     has_many :books

     app/models/books.rb     belongs_to :publisher

publisher 1 多 book

Page 8: Rails初心者レッスン lesson2 3edition

URLとリンク例:book#indexからbook#newへ$ rake routes で確認

new_book GET /books/new(.:format) {:action=>"new", :controller=>"books"}

app/views/books/index.html.erb の設定 <%= link_to 'New Book', new_book_path %>

一番前の部分を書く

URL

Page 9: Rails初心者レッスン lesson2 3edition

実装の順番    Create → Read → Update → Delete がいいらしい。 Rails風には・・・    new+create → show/index → edit → delete

例:memo登録画面にbookを表示する

画面での呼び出し(id引き継ぎ)

memo登録画面 URL:books/:book_id/memos/new

book情報

memo登録 これを利用する

Page 10: Rails初心者レッスン lesson2 3edition

画面での呼び出し(id引き継ぎ)

app/controllers/memos_controller.rb

def new @memo = Memo.new @book = Book.find(params[:book_id]) ・・・ end

def create @book = Book.find(params[:book_id]) @memo = @book.memos.new(params[:memo]) ・・・ end

例:memo登録画面にbookを表示する

app/views/memos/_form.html.erb

<%= form_for([@book, @memo]) do |f| %> ・・・ <div class="field"> <%= f.label :memo_id %><br /> <%= @book.title%><br /> <%= @book.author %> </div> ・・・<% end %>

Page 11: Rails初心者レッスン lesson2 3edition

例:book登録画面にpublisherを表示する

publisherを表示するための情報を取ってこないといけない!

画面での呼び出し方(セレクトボックス)

book登録画面

publisher情報

book登録

URL:/books/new

これどうしよう・・・?

Page 12: Rails初心者レッスン lesson2 3edition

app/views/books/_form.html.erb

<%= form_for([@publishers, @book]) do |f| %> ・・・ <div class="field"> <%= f.label :publisher_id %><br /> <%= f.select :publisher_id,

@publishers.map{|m| [m.name, m.id]} %> </div> ・・・<% end %>

[label, value]

画面での呼び出し方(セレクトボックス)

app/controller/books_controller.rb

def new @book = Book.new @publishers = Publisher.all ・・・ end

def create @book = Book.new(params[:entry]) @book.publisher_id = params[:book][:publisher_id] ・・・ end

例:book登録画面にpublisherを表示する

RubyのEnumerable#map

Page 13: Rails初心者レッスン lesson2 3edition

考えてみよう

画面遷移とURLを決めよう。config/routes.rbを設定しよう。app/model/*.rbを設定しよう。rake routesコマンドでURLを確認しながら、

 app/views/*/*.html.erb や、app/controllers/*_controller.rb を設定して、リンクを貼ったり、必要な情報を各ページに表示させ よう。

Page 14: Rails初心者レッスン lesson2 3edition

おまけDBのテーブル+modelを追加するコマンド$ rails generate model library name:string location:string$ rake db:migrate

controller(+view)を作るコマンド$ rails generate controller bookracks

s 要るよ!

Page 15: Rails初心者レッスン lesson2 3edition

Lesson2は、これで終わりです。お疲れさまでした。