Top > Ruby on Railsあれこれ > 1-6 複雑な条件で入力チェックをしよう

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
<html>
<head>
  <%= stylesheet_link_tag 'ror' %>
</head>
<body>
  <h3>1-6のサンプル メールアドレスの検証の例</h3>
  <%= error_messages_for 'mail' %>
  
  登録するメールアドレスを入力して下さい。
  <% form_tag :action => 'submit' do %>
    メールアドレス<%= text_field :mail, :mailAddress %><%= error_message_on :mail, :mailAddress %><br>
    メールアドレス(確認用)<%= text_field :mail, :reMailAddress %><%= error_message_on :mail, :reMailAddress %><br>
    <%= submit_tag "登録" %>
  <% end %>
</body>
</html>

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
class Mail < ActiveForm
  attr_accessor :mailAddress, :reMailAddress
  validates_presence_of :mailAddress, :reMailAddress, :message => "を入力して下さい"
  
  #valid?呼び出し時に呼ばれるメソッドです。
  def validate
    if self.mailAddress != self.reMailAddress
      errors.add_to_base('メールアドレスと確認用メールアドレスが異なります。')
    end
  end
 
  #バリデーションエラーメッセージ内のプロパティ名を日本語にマッピングします。
  class << self
    HUMANIZED_ATTRIBUTE_KEY_NAMES = {
      "mailAddress" => "メールアドレス",
      "reMailAddress" => "確認用メールアドレス"
    }
 
    def human_attribute_name(attribute_key_name)
      HUMANIZED_ATTRIBUTE_KEY_NAMES[attribute_key_name] || super
    end
  end
  
end

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
class CheckMailController < ApplicationController
  
  # 入力画面表示のアクションメソッド
  def index
    render :action => 'input1.html.erb'
  end
  
  # 確認画面表示のアクションメソッド
  # バリデーションエラーが発生した場合は入力画面に戻る
  def submit
    @mail = Mail.new(params[:mail])
    if @mail.valid?
      render :action => 'MailChecked.html.erb'
    else
      render :action => 'input1.html.erb'
    end
  end
  
end

  0
  1
  2
  3
  4
  5
  6
  7
  8
<html>
<head>
<title></title>
</head>
<body>
  <h3>1-6のサンプル メールアドレスの検証の例</h3>
  メールアドレスが登録されました。
</body>
</html>
  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
@CHARSET "utf-8";
 
body { background-color: #EEEEEE; }
 
.formError {
  font-size: x-small;
  color: red;
  }
 
.fieldWithErrors {
  padding: 2px;
  background-color: red;
  /*display: table;*/
}
 
#errorExplanation {
  width: 400px;
  border: 2px solid red;
  padding: 7px;
  padding-bottom: 12px;
  margin-bottom: 20px;
  background-color: #f0f0f0;
}
 
#errorExplanation h2 {
  text-align: left;
  font-weight: bold;
  padding: 5px 5px 5px 15px;
  font-size: 12px;
  margin: -7px;
  background-color: #c00;
  color: #fff;
}
 
#errorExplanation p {
  color: #333;
  margin-bottom: 0;
  padding: 5px;
}
 
#errorExplanation ul li {
  font-size: 12px;
  list-style: square;
}

  0
ActionView::Base.field_error_proc = Proc.new { |html_tag, instance| "<span class='fieldWithErrors'>#{html_tag}</span>" }

添付ファイル: fileror-sample1-6_6.jpg 228件 [詳細] fileror-sample1-6_7.jpg 248件 [詳細] fileror-sample1-6_5.jpg 218件 [詳細] fileror-sample1-6_4.jpg 215件 [詳細] fileror-sample1-6_3.jpg 233件 [詳細] fileror-sample1-6_1.jpg 215件 [詳細] fileror-sample1-6_2.jpg 227件 [詳細]

リロード   新規 編集 凍結解除 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2012-08-08 (水) 23:25:32 (2923d)