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

7,090 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
7,090
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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:stringbody:text score:integer以下のディレクトリとファイルが作成されます(主要なものだけを表示)。Gemfileapp/controllers/posts_controller.rbapp/models/post.rbapp/views/posts/index.html.erbapp/views/posts/show.html.erbapp/views/posts/new.html.erbapp/views/posts/edit.html.erbapp/views/posts/_form.html.erbdb/migrates/20101016171302_create_posts.rb (数字の部分は環境によって変化)public/stylesheets/scaffold.cssページ送り処理のためのライブラリを読み込むように指示します。Gemfileに以下の行 を追加した後、gem will_paginate以下のコマンドを実行して、ライブラリを用意します。$ bundle update
  3. 3. 5.データベースの作成データベースを作成します。postsテーブルが同時に作成されます(テーブル名はデータ モデル名を複数形にしたものになります。項目3では Post としているので、テーブル名 は posts になります)。$ rake db:migrate6. サーバを起動します。$ rails server7. 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.allallメソッドではデータの配列が返ってきますので、これをeachなどを使用して取り出します。> posts.each do ¦post¦ puts post.username endWebアプリケーションの場合、画面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ブラウザ などから送られてきたリクエストをもとに、処理を振り分ける役割を行います。paramsURL内のパラメータやフォームに入力されたデータは、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が返ってくる

×