Successfully reported this slideshow.

Next-L Enju 開発WS #03 Ruby on Railsの使い方

0

Share

Upcoming SlideShare
Haskellday rf
Haskellday rf
Loading in …3
×
1 of 8
1 of 8

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Next-L Enju 開発WS #03 Ruby on Railsの使い方

  1. 1. Ruby on Railsの基本的な使い方 田辺浩介 1. はじめに Ruby on RailsはWebアプリケーションを手軽に作成するためのフ レームワークです。 Next-L EnjuはRailsの規則に従って作成されて いるため、Railsのサンプルアプリケーションを 作成することに よって、Enjuのおおまかな構成を把握することができます。 2. サンプルアプリケーションを作る 掲示板アプリケーションを作ってみましょう。以下のコマンドで新 しいアプリケーショ ンを作ります。 $ cd $ rails new bbs アプリケーションのディレクトリに移動します。 $ cd bbs 掲示板は以下の項目を持つとします。 項目名 データ型 username(投稿者名) string(255文字までの文字列) email(メールアドレス) string(255文字までの文字列) body(本文) text(255文字以上の文字列) score(評価) integer(整数)
  2. 2. 3. アプリケーションのひな形の作成 以下のコマンドを実行します。ここでは掲示板のデータモデルの名 前をPostとします。 $ rails generate scaffold Post username:string email:string body:text score:integer 以下のディレクトリとファイルが作成されます(主要なものだけを 表示)。 Gemfile app/controllers/posts_controller.rb app/models/post.rb app/views/posts/index.html.erb app/views/posts/show.html.erb app/views/posts/new.html.erb app/views/posts/edit.html.erb app/views/posts/_form.html.erb db/migrates/20101016171302_create_posts.rb (数字の部分 は環境によって変化) public/stylesheets/scaffold.css ページ送り処理のためのライブラリを読み込むように指示します。 Gemfileに以下の行 を追加した後、 gem 'will_paginate' 以下のコマンドを実行して、ライブラリを用意します。 $ bundle update
  3. 3. 5.データベースの作成 データベースを作成します。postsテーブルが同時に作成されます (テーブル名はデータ モデル名を複数形にしたものになります。項 目3では Post としているので、テーブル名 は posts になりま す)。 $ rake db:migrate 6. サーバを起動します。 $ rails server 7. Webブラウザで http://localhost:3000/posts にアクセスしま す。いくつかデータを入力し てみましょう。 Ruby on Railsで作成されたアプリケーションは、大きく分けてモ デル・コントローラ・ ビューの3つで構成されます。この構成を 「MVC」(Model-View-Controller)と呼びます が、それぞれの役 割を次項で説明します。
  4. 4. モデル(データの操作) モデルはデータの操作(取得・作成・更新・削除)を担当します。こ こでは実際にPostモ デルを操作してみましょう。 Webブラウザでもデータの操作は行えますが、今回は詳細を確か めるために、コンソール を使って操作を行います。コンソールは 以下のコマンドで起動します。 $ rails console コンソールはirbと同じ操作ができるようになっており、Rubyと Railsで使われる命令を直 接実行することができます。 データの追加 createメソッドを使用してデータを作成します。 > post = Post.create(:username => tanabe , :body => こんに ちは ) または、newメソッドとsaveメソッドを使用することもできます。 > post = Post.new(:username => tanabe , :body => こんにち は) > post.save 正しくデータが作成されると、idが自動的に付与されます。 => #<Post id: 1, username: "tanabe", email: nil, body: "こんに ちは", score: nil, created_at: "2010-10-16 20:24:23", updated_at: "2010-10-16 20:24:23"> この場合、idに1が振られています。
  5. 5. データの取得 保存したデータをすべて取得するには、allメソッドを使用します。 > posts = Post.all allメソッドではデータの配列が返ってきますので、これをeachな どを使用して取り出します。 > posts.each do ¦post¦ puts post.username end Webアプリケーションの場合、画面1ページごとに表示件数を限定 してデータを取得する 必要があります。たとえば、1ページあたり 5件取得することとし、その2ページ目のデー タを取得するには、 以下のようにpaginateメソッドを使用します。 > posts = Post.paginate(:page => 2, :per_page => 5) 保存したデータを1件だけ取得するには、findメソッドを使用しま す。以下のようにidを指定して取り出します。 > post = Post.find(1) > post.username # usernameだけを取り出す > post.body # bodyだけを取り出す 条件を指定してデータを取得するには、where を使用します。 # usernameがtanabeとなっているデータをすべて取得。配列が 返ってくる > posts = Post.where(:username => tanabe ) # usernameがtanabeとなっているデータを最初の1件だけ取得 > post = Post.where(:username => tanabe ).first
  6. 6. データの更新 update_attributesメソッドを使用します。 > post.update_attributes({:username => kosuke , :email => tanabe@example.jp }) 以下のように、saveメソッドを使用することもできます。 > post.username = kosuke > post.email = tanabe@example.jp > post.save データの削除 destroyメソッドを使用します。 > post.destroy
  7. 7. ここまでのActiveRecordの使い方をまとめてみます。 動作 書き方 データ全件を取得 posts = Post.all する 1ページ目のデー posts = Post.paginate(:page => 1) タをすべて取得す る idが15のデータを post = Post.find(15) 取得する username posts = Post.where(:username => ʻtanabeʼ) が tanabe のデー タをすべて 取得す る username post = Post.where(:username => ʻtanabeʼ).first が tanabe のデー タを1件だ け取得 する データを作成する post = Post.create(:username => (1) ʻtanabeʼ, :body => ʻこんにちはʼ) データを作成する post = Post.new(:username => ʻtanabeʼ, :body (2) => ʻこんにちはʼ) post.save データを更新する post = Post.find(15) (1) post.update_attributes({:username => ʻkosukeʼ}) データを更新する post = Post.find(15) (2) post.username = ʻkosukeʼ post.save データを削除する post = Post.find(15) post.destroy
  8. 8. コントローラ(処理の振り分け) Railsで作成したアプリケーションには、一覧表示(index)・詳細表 示(show)・新規作成 (new)・編集(edit)の機能があらかじめ用意さ れています。コントローラは、Webブラウザ などから送られてき たリクエストをもとに、処理を振り分ける役割を行います。 params URL内のパラメータやフォームに入力されたデータは、paramsと いう変数に入ります。 たとえば、http://localhost:3000/posts? query=tulips&page=3 というURLにアクセスがある と、 params[:query] に tulips が、params[:page] に 3 が保存されま す。具体的な使用方法 は講義内で説明します。 ビュー(画面表示) モデルとコントローラによって送られてきたデータをもとに、画面 の表示を担当する部分 です。Ruby on Railsでは、HTMLの中に Rubyのプログラムを埋め込む形式( <%= %> の部分にRubyを書 きます)がデフォルトとして使われています。 コントローラで使用 したインスタンス変数は、ビューの中で使用することができます。 く わしくはソースコードを参照してください。 ポイント • 変数名は配列が入る場合は複数形、データ1件が入る場合は単数 形でつけるとわかりや すいです。既定で作られるコントローラは そのように作成してあります。 posts = Post.all # 複数件のpostが返ってくる post = Post.find(15) # 1件のpostが返ってくる

×