Rubyはオブジェクト指向プログラミング
Rubyはスクリプト言語(インタプリタ型言語)
1)Railsの新規プロジェクトの作成
任意の箇所に「rails」フォルダを作成し、cdコマンドで移動する
【DOSコマンドプロンプト】------------------------
>rails (プロジェクト名)
create
create app/controllers
create app/helpers
create app/models ........
create log/test.log
-------------------------------------------------
2)Railsプロジェクトのフォルダ構成
-------------------------
\rails
|-\(プロジェクト名)
|-\app
|-\controllers ※コントローラ格納フォルダ
|-\helpers ※モデル格納フォルダ
|-\models ※モデル格納フォルダ
|-\views ※ビュー格納フォルダ
|-\config
|-\db
|-\doc
|-\lib
|-\log
|-\public
|-\script
|-\test
|-\tmp
|-\vender
|-Rakefile
|-README
-------------------------
3)コントローラ
■コントローラ・・・ユーザーの入力を受取る
※処理はModelに渡す
※出力はViewに渡す
■コントローラの作成
※プロジェクトフォルダに移動し、以下のコマンドで作成する
>ruby script\generate controller (コントローラ名) (アクション1) (アクション2)
4)クラス
■クラス・・・オブジェクトの種類を表す
※Rubyは全てオブジェクトとして扱う。その種類によりクラスに分類
(全てのオブジェクトは何れかのクラスに属する)
<クラスの定義> ※コントローラ処理
※RULE:クラス名の先頭は大文字
※RULE:コントローラのクラス名は"Controller"を付ける
※RULE:クラスの宣言により定義済みのクラスを継承する
●==============================================●
class (クラス名) < (継承元クラス名)
クラスの定義
end
●==============================================●
5)メソッドの定義
●==============================================●
def メソッド名 (引数1,引数2,...)
実行したい処理
end
●==============================================●
6)インスタンス変数の定義
※メソッドを抜けても値が保持される変数
●==============================================●
@インスタンス変数名=引数
●==============================================●
attr_reader :指定したメソッドに対し参照のみ可能
attr_writer :指定したメソッドに対し変更のみ可能
attr_accessor:指定したメソッドに対し参照・変更が可能
7)ビュー
画面への表示・出力を行う
※Railsのコントローラで作成されたビューファイル(HTML)
※RULE:html内でRubyスクリプトの記述は <%〜%>で囲う
※RULE:Rubyスクリプトの実行結果の表示は <%=〜%>で囲う
※RULE:HTMLタグの出力は <%=h〜%>で囲う
8)サンプルプロジェクト(hello)
■動作:画面1に「名前」を入力 ⇒ 画面2に[入力した名前]を表示
【DOSコマンドプロンプト】------------------------
\rails>cd hello
\rails\hello>ruby script\generate controller hello name1 name2
-------------------------------------------------
exists app/controllers/
exists app/helpers/
create app/views/hello
exists test/functional/
create app/controllers/hello_controller.rb
create app/controllers/hello_controller_test.rb
create app/helpers/hello_helper.rb
create app/views/hello/name1.html.erb
create app/views/hello/name2.html.erb
-------------------------------------------------
<フォルダ構成>------------------------
\rails\hello
|-\app
|-\controllers
|-application.rb
|-hello_controller.rb
|-\helpers
|-application_helper.rb
|-hello_helper.rb
|-\models
|-hello_helper.rb
|-\views
|-\hello
|-name1.html.erb
|-name2.htnl.erb
-------------------------------------------------
<コントローラの作成>------------------------
\app\controllersフォルダ内
★hello_controller.rb
※name1のアクションの結果をname2に出力する
------------------------------------------------
class HelloContoroller < ApplicationContoroller
def name1
end
def name2
end
end
------------------------------------------------
★application.rb(定義済み)
※ActionControllerクラスのBaseメソッドを継承
------------------------------------------------
class ApplicationContoroller < ActionControler::Base
helper :all # include all helpers, all the time
end
------------------------------------------------
★user.rb
※name1で入力した名前を保持する
------------------------------------------------
class User
def initialize(name="お名前")
@name = name
end
attr_accessor :name
end
------------------------------------------------
★def initialize(name="お名前")
※initializeメソッド:newメソッドでオブジェクトを生成すると呼ばれる
※設定した引数がnewに渡される
※インスタンスの定義
@name = name
<コントローラの変更>
★hello_controller.rb
※user.rbによりname1で入力したuserをインスタンス変数@userに保持
※newメソッドでオブジェクトuserに新しい値を設定
※WEBで入力したデータを"params"で取り出す。
------------------------------------------------
class HelloContoroller < ApplicationContoroller
def name1
end
def name2
@user = User.new(params[:user][:name])
session[:guest] = @guest
end
end
------------------------------------------------
※WEBで入力したデータを取り出す。
●==============================================●
params[:オブジェクト名][:属性名])
●==============================================●
params[:user][:name]
※WEBページ上のオブジェクト"user"の"name"属性で取り出す
session[:guest] = @guest
※このセッション間は"guest"オブジェクトの値を保持する
\app\views\helloフォルダ内
★name1.html.erb
------------------------------------------------
<h1>Input Your Name !</h1>
<% form_tag :action => :name2 do %>
<%= text_field :user, name %>
<%= submit_tag '実行' %>
<% end %>
------------------------------------------------
★name2.html.erb
------------------------------------------------
<h1><%= h "Hello!" #{@user.name}さん" %></h1>
<% form_tag :action => :name1 do %>
<%= submit_tag '戻る' %>
<% end %>
------------------------------------------------


