Top > Ruby on Railsあれこれ > 1-4 複数の情報を一括登録しよう


  0
  1
  2
  3
    <% for row in @rows %>
      <%= text_field_tag 'rows[][name]', row.name  %>
      <%= text_field_tag 'rows[][value]', row.value %><br/>
    <% end %>
  0
  1
  2
  3
  4
      <input id="rows[][name]" name="rows[][name]" type="text" value="Name0" />
      <input id="rows[][value]" name="rows[][value]" type="text" value="Value0" /><br/>
    
      <input id="rows[][name]" name="rows[][name]" type="text" value="Name1" />
      <input id="rows[][value]" name="rows[][value]" type="text" value="Value1" /><br/>

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <h1>1-4のサンプル  複数対応の例</h1>
    
    繰り返す回数を入力して下さい。<br>(正の整数  入力値チェックは1-5以降を参照して下さい。)
    <% form_tag :action => 'show' do %>
      繰り返し回数<%= text_field_tag 'count', @init_row_num %>
      <%= 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
 24
 25
class PluralController < ApplicationController
  
  #初期の行数入力画面表示用アクションメソッド
  def index
    #1) 行数入力テキストボックスの初期値"5"を設定します。
    @init_row_num = 5
    render :action => 'count.html.erb'
  end
  
  #データ編集画面表示用アクションメソッド
  def show
    @rows = Array.new
    
    #行数分のデータを生成します。
    params[:count].to_i.times { |i|
      data = Row.new
      data.name = "Name" + i.to_s
      data.value = "Value" + i.to_s
      @rows[i] = data
    }
    #後で比較するためにセッションへ格納する。
    session[:org_rows] = @rows
    render :action => 'show.html.erb'
  end
  
end

  0
  1
  2
class Row
  attr_accessor :name, :value
end

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
  <h1>1-4のサンプル  複数対応の例</h1>
  <% form_tag :controller => 'plural_change', :action => 'change' do %>
    <% for row in @rows %>
      <%= text_field_tag 'rows[][name]', row.name  %>
      <%= text_field_tag 'rows[][value]', row.value %><br/>
    <% end %>
    <%= 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
 24
 25
 26
 27
 28
 29
 30
 31
 32
class PluralChangeController < ApplicationController
  
  #「変更」ボタンクリック時のアクションメソッド
  def change
    @disp_rows = Array.new
    org_rows = session[:org_rows]
    new_rows = params[:rows]
    
    #初期データと変更後データを比較して、変更があった行はchangedをtrueにする。
    org_rows.each_with_index { |org_row, i|
      
      rowHelper = RowHelper.new
      
      row = Row.new
      row.name = new_rows[i][:name]
      row.value = new_rows[i][:value]
      
      rowHelper.row = row
      rowHelper.changed = false
 
      #logger.debug(org_row.name)
      #logger.debug(new_rows[i][:name])
      
      if org_row.name != new_rows[i][:name] || org_row.value != new_rows[i][:value]
        rowHelper.changed = true
      end
      @disp_rows.push(rowHelper)
    }
    reset_session
    render :action => 'result.html.erb'
  end
  
end
  0
  1
  2
class RowHelper
  attr_accessor :row, :changed
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
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
  <h1>1-4のサンプル  複数対応の例</h1>
  <h3>変更内容の表示</h3>
  データ番号の色が赤いデータが変更されています。
  <table border="1">
    <tr>
      <th>データ番号</th>
      <th>Name</th>
      <th>Value</th>
    </tr>
    <% @disp_rows.each_with_index { |d, index| %>
    <tr>
      <td>
      <% if d.changed * true %>
        <font color="#ff0000"><%=h index %></font>
      <% else %>
        <%=h index %>
      <% end %>
      </td>
      <td><%=h d.row.name %></td>
      <td><%=h d.row.value %></td>
    </tr>
    <% } %>
  </table>
</body>
</html>

添付ファイル: fileror-sample1-4_5.jpg 234件 [詳細] fileror-sample1-4_6.jpg 260件 [詳細] fileror-sample1-4_4.jpg 285件 [詳細] fileror-sample1-4_3.jpg 292件 [詳細] fileror-sample1-4_2.jpg 286件 [詳細] fileror-sample1-4_1.jpg 229件 [詳細]

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