14
Rails3 初心者レッスン by Minami.rb しきりなおしの Lesson 3 2011329日火曜日

Rails初心者レッスン lesson3

Embed Size (px)

DESCRIPTION

by Minami.rb

Citation preview

Page 1: Rails初心者レッスン lesson3

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

しきりなおしの

Lesson 3

2011年3月29日火曜日

Page 2: Rails初心者レッスン lesson3

このレッスンでやること一覧1. Railsで何をする?どうしてRails?2. Railsを通してデータベースをブラウザから扱う3. 作ってみよう事始め4. プロジェクトとテーブル5. Railsはどんなふうに働いてる?6. URLが大事7. 見た目をキレイに8. リレーションを考える9. 日本語対応10.プラグインを使う11.ちょっとRubyに働いてもらう12.herokuに公開しよう

2011年3月29日火曜日

Page 3: Rails初心者レッスン lesson3

Lesson2の復習使ったコマンド

$ rails generate controller コントローラ名 メソッド名$ rake routes

いじったファイル config/routes.rb app/view 以下いろいろ

リンクの貼り方 link_to / button_to / button_to_function

2011年3月29日火曜日

Page 4: Rails初心者レッスン lesson3

URLとリレーションURLの設定とDBの設定は別のもの

URL config/routes.rb   http://host/(親)s/:(親)id/(子)s

DB設定 app/models/(親).rb     has_many :(子)s

     app/models/(子).rb     belongs_to :(親A)

・・・

親子子

2011年3月29日火曜日

Page 5: Rails初心者レッスン lesson3

今回のリレーション

DB設定 app/models/A.rb     has_many :Bs, :through => :ABs     app/models/B.rb     has_many :As, :through => :ABs     app/models/AB.rb     belongs_to :A     belongs_to :B

AB(entry)

・・・(中間テーブル)

A(event)

AB(entry)

AB(entry)

B(member)

B(member)

B(member)

2011年3月29日火曜日

Page 6: Rails初心者レッスン lesson3

リレーションの設定 app/models/event.rb class event < ActiveRecord::Base has_many :entries has_many :members, :through => :entries app/models/member.rb #コチラもevent.rbと同様に

app/models/entry.rb class entry < ActiveRecord::Base belongs_to :event belongs_to :member

2011年3月29日火曜日

Page 7: Rails初心者レッスン lesson3

実装の順番は、CRUDがいいらしい。  Create, Read, Update, Delete  (new+create, index/show, edit, delete)

リレーションを組み込む1

例:entriesでeventを表示する

events#showmember追加ボタン

entries#new

URL:events/:id URL:events/:event_id/entries/new

event

member

event

2011年3月29日火曜日

Page 8: Rails初心者レッスン lesson3

リレーションを組み込む1

app/controller/entries_controller.rb

def new @entry = Entry.new @event = Event.find(params[:event_id]) ・・・ end

def create @entry = Entry.new(params[:entry]) @entry.event_id = params[:event_id] ・・・ end

例: entriesでeventを表示する

app/views/entries/_form.html.erb

<%= form_for([@event, @entry]) do |f| %> ・・・ <div class="field"> <%= f.label :event %><br /> <%= @event.name %> <%= @event.date_on %> </div> ・・・<% end %>

2011年3月29日火曜日

Page 9: Rails初心者レッスン lesson3

memberを表示するためのmember_idを取ってこないといけない!

リレーションを組み込む2

例:entriesでmemberのセレクトボックスを作る

events#showmember追加ボタン

entries#new

URL:events/:id URL:events/:event_id/entries/new

event

member

event

2011年3月29日火曜日

Page 10: Rails初心者レッスン lesson3

app/views/entries/_form.html.erb

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

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

[label, value]

リレーションを組み込む2

app/controller/entries_controller.rb

def new @entry = Entry.new @event = Events.find(params[:event_id]) @members = Member.all ・・・ end

def create @entry = Entry.new(params[:entry]) @entry.event_id = params[:event_id] @entry.member_id = params[:entry][:member_id] ・・・ end

例: entriesでmemberのセレクトボックスを作る

2011年3月29日火曜日

Page 11: Rails初心者レッスン lesson3

日本語にしてみるi18n で日本語化:viewでlabel指定されたところが日本語化される

 validationのエラーメッセージで特に有効

①翻訳する日本語の元ネタを取ってくる http://github.com/svenfuchs/rails-i18n/raw/master/rails/locale/ja.yml②config/application.rb に ja を設定する # The default locale is :en ・・・ # config.i18n.load_path・・・ config.i18n.default_locale = :ja③config/locales/ja.yml に必要な日本語を追加する(例) activerecord: attributes: member: name: “名前”

(validation:Lesson4)

2011年3月29日火曜日

Page 12: Rails初心者レッスン lesson3

プラグインを使ってみようキビシイことを言うようですが、、、プラグインはたくさんあるので、これから自力でやっていけるように、READMEを自分で読んでみましょう。

devise:認証プラグイン https://github.com/plataformatec/devise

kaminari:ページネーションプラグイン https://github.com/amatsuda/kaminari

PDFKit:PDF出力プラグイン https://github.com/jdpace/PDFKit

2011年3月29日火曜日

Page 13: Rails初心者レッスン lesson3

modelにリレーションを設定してください。event#showから参加メンバーを登録(entry#new)できるようにしてください。event#showに参加メンバーが表示されるようにしてください。member#showに参加イベントが表示されるようにしてください。entry#newから直接event#showに画面を移動するようにしてください。 i18nで日本語対応させましょう。プラグイン:kaminariでページネーションしましょう。 プラグイン:deviseで認証ができるようにしましょう。deviseの認証画面をlogin/logoutボタンにリンクさせましょう。

演習

(次回勉強会でも扱います)2011年3月29日火曜日

Page 14: Rails初心者レッスン lesson3

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

2011年3月29日火曜日