2008年11月20日

Ruby on Railsのチュートリアル〜足し算

コードなにがしの「Ruby on Railsあれこれ」にも投稿していますが、こちらにも。


目次


●事前準備
●概要
●サンプルのポイント
●サンプルの使い方
●ファイル構成
●ビュー(画面)
●モデル(ActiveForm)
●コントローラー

内容


事前準備


プラグインの準備


Ruby on Railsのチュートリアルの前準備」を参考にして、Eclipseプロジェクトを作成して下さい。

色々なプラグインの「4 アクティブフォーム(ActiveForm)」をインストールして下さい(既にされていれば、再インストール必要はありません)。

概要


足し算を行うアプリケーションです。

入力画面(index.html.erb)
tutorial_add_1.jpg

結果画面(index.html.erb)
tutorial_add_2.jpg

サンプルのポイント


・データベース(ActiveRecord)を使用しない場合に、ActionFormを使用してバリデーションを行います。

サンプルの使い方


サンプルはあらかじめ用意していないので、以降の項目を参照にして、自分で作成しなければいけません。作成後に、ブラウザからhttp://127.0.0.1:3000/addにアクセスしましょう(ポート番号"3000"は適宜、環境に応じて読み替えて下さい)。

ファイル構成


本項で作成するファイル
ファイル名種類
index.html.erbビュー
add.rbモデル
add_controller.rbコントローラー


ビュー(画面)


入力画面、兼、結果画面を作成しましょう。
"ror-tutorial\app\views\add\index.html.erb"ファイルを以下の内容で作成します。

<html>
<head>
<title>Tutorial: Add</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<%= stylesheet_link_tag 'ror' %>
</head>
<body>
<h2>Tutorial: Add</h2>

<%# バリデーションエラーがある場合はメッセージが表示されます%>
<%= error_messages_for 'add' %>

<%# /add/calculateにサブミットします%>
<% form_tag :action => 'calculate' do %>
<%# addオブジェクトのarg1プロパティに対応します%>
<%= text_field(:add, :arg1) %> +
<%= text_field(:add, :arg2) %>
=<%=h @result %><br />

<%= submit_tag "サブミット" %>
<% end %>
</body>
</html>


モデル(ActiveForm)


ActiveFormを継承したモデルを作成します。リクエストパラメータのバリデーションに使用します。

"ror-tutorial\app\models\add.rb"ファイルを以下の内容で作成します。

class Add < ActiveForm
attr_accessor :arg1, :arg2
validates_presence_of :arg1, :arg2, :message => "を入力して下さい"
end

コントローラー


"ror-tutorial\app\controllers\add_controller.rb"ファイルを以下の内容で作成します。

class AddController < ApplicationController

#入力画面表示
def index
render :action => 'index.html.erb'
end

#結果画面表示
def calculate
#リクエストデータをモデル(ActiveForm)にコピーします。
@add = Add.new(params[:add])

#入力値が正常の場合は、計算を行う。
@result = @add.arg1.to_i + @add.arg2.to_i if @add.valid?
render :action => 'index.html.erb'
end

end


posted by 台北猫々 at 00:07| Comment(1) | TrackBack(0) | 技術メモ(Ruby)
この記事へのコメント
はじめまして。

Rails の勉強をはじめたばかりで参考にさせてもらっています。

Rails 2.3.2 を使っているのですが、
何も値を入れずに「サブミット」を押すと

undefined method `self_and_descendants_from_active_record' for Add:Class

のエラーが出てしまいます。
どのようにしたら必須チェックが入るのでしょうか。
Posted by YoYoNa at 2009年04月10日 14:48
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/23101011

この記事へのトラックバック