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

  • 6,568 views
Uploaded on

 

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
6,568
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
4
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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. 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. 5.データベースの作成データベースを作成します。postsテーブルが同時に作成されます(テーブル名はデータ モデル名を複数形にしたものになります。項目3では Post としているので、テーブル名 は posts になります)。$ rake db:migrate6. サーバを起動します。$ rails server7. Webブラウザで http://localhost:3000/posts にアクセスします。いくつかデータを入力し てみましょう。Ruby on Railsで作成されたアプリケーションは、大きく分けてモデル・コントローラ・ ビューの3つで構成されます。この構成を「MVC」(Model-View-Controller)と呼びます が、それぞれの役割を次項で説明します。
  • 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. データの取得保存したデータをすべて取得するには、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. データの更新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. ここまでの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. コントローラ(処理の振り分け)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が返ってくる