Top > Ruby on Railsあれこれ > とりあえず基本的なアプリを作成しましょう

  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
<html>
<head>
  <title>Tutorial: Employee List</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <%= stylesheet_link_tag 'ror' %>
</head>
<body>
<h2>Tutorial: Employee List</h2>
 
<table border="1">
  <tr style="background-color:pink">
    <th>Id</th><th>Name</th><th>JobType</th><th>Salary</th><th>Department</th><th>編集</th>
  </tr>
  <% for e in @employees %>
  <tr style="background-color:<%= cycle('white', 'yellow') %>">
    <td align="right"><%=h e.id %></td>
    <td><%=h e.name %></td>
    <td><%=h e.job_type %></td>
    <td align="right"><%= number_with_delimiter(e.salary, delimiter=",") %></td>
    <td><%=h r_label(e.department_id, @departments, "id", "name") %></td>
    <td><%= link_to "編集", {:action => 'edit', :id => e.id} %></td>
  </tr>
  <% end %>
</table>
</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
<html>
<head>
  <title>Tutorial: Employee Edit</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <%= stylesheet_link_tag 'ror' %>
</head>
<body>
 
<h2>Tutorial: Employee Edit</h2>
 
<% form_for(@employee, :url => { :action => 'confirm', :id => @employee.id }) do |f| %>
  <%= f.error_messages %>
  <%= f.hidden_field :id %>
  <table>
    <tr>
      <td>Id</td><td><%=h @employee.id %></td>
    </tr>
    <tr>
      <td><%= f.label :name %></td>
      <td><%= f.text_field :name %></td>
    </tr>
    <tr>
      <td>JobType</td>
      <td><%= f.select :job_type, ['CLERK', 'SALESMAN', 'MANAGER', 'ANALYST', 'PRESIDENT'] %></td>
    </tr>
    <tr>
      <td><%= f.label :salary %></td>
      <td><%= f.text_field :salary %></td>
    </tr>
    <tr>
      <td>Department</td>
      <td><%= f.select :department_id, @departments.collect {|p| [ p.name, p.id ] } %></td>
    </tr>
  </table>
  <%= f.submit "確認" %>
  <%= f.submit "戻る", {:type => "button", :onClick => "this.form.action='/employees/index'; this.form.submit();"} %>
<% 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
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
<html>
<head>
  <title>Tutorial: Employee Confirm</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <%= stylesheet_link_tag 'ror' %>
</head>
<body>
 
<h2>Tutorial: Employee Confirm</h2>
 
<% form_for(@employee, :url => { :action => 'store', :id => @employee.id }) do |f| %>
  <%= f.error_messages %>
  <%= f.hidden_field :id %>
  <%= f.hidden_field :name %>
  <%= f.hidden_field :job_type %>
  <%= f.hidden_field :salary %>
  <%= f.hidden_field :department_id %>
  <%= f.hidden_field :name %>
  <table>
    <tr>
      <td>Id</td><td><%=h @employee.id %></td>
    </tr>
    <tr>
      <td>Name</td><td><%=h @employee.name %></td>
    </tr>
    <tr>
      <td>JobType</td><td><%=h @employee.job_type %></td>
    </tr>
    <tr>
      <td>Salary</td>
      <td><%= number_with_delimiter(@employee.salary, delimiter=",") %></td>
    </tr>
    <tr>
      <td>Department</td><td><%=h @department_name %></td>
    </tr>
  </table>
  <%= f.submit "更新" %>
  <%= f.submit "戻る", {:type => "button", :onClick => "this.form.action='/employees/backToEdit'; this.form.submit();"}%>
<% end %>
</body>
</html>
  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
class Employee < ActiveRecord::Base
  
  validates_presence_of :name, :salary, :message => "を入力して下さい"
  
  #バリデーションエラーメッセージ内のプロパティ名を日本語にマッピングします。
  class << self
    HUMANIZED_ATTRIBUTE_KEY_NAMES = {
      "name" => "氏名",
      "salary" => "給与額"
    }
  
    def human_attribute_name(attribute_key_name)
      HUMANIZED_ATTRIBUTE_KEY_NAMES[attribute_key_name] || super
    end
  end
  
end
  0
  1
class Department < ActiveRecord::Base
end
  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
module ApplicationHelper
  
  #SAStrutsのf:labelと同じ機能のメソッド
  #id→nameの変換を行います。
  #パラメータ説明
  # target_id : nameに変換したいid
  # objs : idとnameを持つモデルのリスト
  # id_method : モデルからidを取得するためのメソッド名(=プロパティ名)
  # name_method : モデルからnameを取得するためのメソッド名(=プロパティ名)
  def r_label(target_id, objs, id_method, name_method)
  
    for obj in objs
      #オブジェクトのメソッドの動的な呼び出しを行っています。
      #id_methodに設定されている名前のメソッドを呼び出します。
      id = obj.__send__(id_method)
      if id * target_id
        return obj.__send__(name_method)
      end
    end
    return ""
  end
  
end
  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
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
class EmployeesController < ApplicationController
 
  #一覧画面表示
  def index
    @departments = Department.find(:all)
    @employees = Employee.find(:all)
    render :action => 'index.html.erb'
  end
  
  #編集画面表示
  def edit
    @departments = Department.find(:all)
    @employee = Employee.find(params[:id])
    render :action => 'edit.html.erb'
  end
  
  #編集内容確認画面表示
  def confirm
    @department_name = Department.find(params[:employee][:department_id]).name
    @employee = Employee.new(params[:employee])
    #idはコピーされないので、個別にコピーします。
    @employee.id = params[:employee][:id]
    
    #バリデーションチェック
    if @employee.valid?
      render :action => 'confirm.html.erb'
    else
      #エラー
      @departments = Department.find(:all)
      render :action => 'edit.html.erb'
    end
  end
  
  #編集内容確認画面→編集画面に戻る
  def backToEdit
    @departments = Department.find(:all)
    @employee = Employee.new(params[:employee])
    #idはコピーされないので、個別にコピーします。
    @employee.id = params[:employee][:id]
    render :action => 'edit.html.erb'
  end
  
  #更新処理
  def store
    @employee = Employee.find(params[:id])
    if @employee.update_attributes(params[:employee])
      flash[:notice] = 'DenpyoMeisai was successfully updated.'
      index
    else
      #エラー
      confirm
    end
  end
  
end

添付ファイル: filedb_tuto_base_5.jpg 351件 [詳細] filedb_tuto_base_4.jpg 339件 [詳細] filedb_tuto_base_3.jpg 371件 [詳細] filedb_tuto_base_2.jpg 416件 [詳細] filedb_tuto_base_1.jpg 372件 [詳細]

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