libro
www.tuyano.com
初心者のためのRuby on Rails3入門

Modelによるデータベースアクセスの基本 (3/4)

作成:2012-02-13 07:48
更新:2012-02-16 15:37

■データの編集・更新(Update)

データの更新は、データの新規作成と似ていますが微妙に違います。更新作業は、「更新するデータを取り出す」「その値を更新する」という2段階の作業になります。

まずは更新するデータをModelインスタンスとして取得します。これは既にやりましたね。findを利用すれば良いのでした。
変数 = 《Model》.find( ID );
こうしてデータを取得したら、その内容を更新します。更新は、「update_attributes」というメソッドを用いるのが一般的です。これは、newと同様に、保管する値を引数に記述して呼び出すことができます。
《Model》.update_attributes(《オプションの指定》)
オプションは、保管するプロパティ(テーブルのフィールド名)と値を「○○ => '△△'」という具合にまとめて記述します。例えば、Heloモデルクラスならこんな具合ですね。
《Helo》.update_attributes(:title => 'タイトル', :content => 'コンテンツ')
それぞれ「:オプション名 => '値'」というような形で記述されているのがわかるでしょう。これさえきちんと呼び出せれば、後は何もいりません。newがわかっていればそれほど悩むこともないですね。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※edit.html.erbのソースコード

<p><%= @msg %></p>
<hr>

<form method="post" action="/helo/update">
	<input type="hidden" id="id" name="id" value="<%= @helo.id %>">
<table>
  <tr>
    <td>ID:</td>
    <td><%= @helo.id %></td>
  </tr>
  <tr>
    <td>title:</td>
    <td><input type="text" id="title" name="title"
		size="40" value="<%= @helo.title %>"></td>
  </tr>
  <tr>
    <td>content:</td>
    <td><textarea id="content" name="content" cols="40"
		rows="3"><%= @helo.content %></textarea></td>
  </tr>
  <tr>
    <td></td>
    <td><input type="submit"></td>
  </tr>
</table>
</form>



※edit/updateアクションメソッド

  def edit
    @title = "サンプルレイアウト"
    @header_content = "データの更新"
    @msg = "データの更新を行います。"
    @helo = Helo.find(params['id'])
  end
  
  def update
    title = params['title']
    content = params['content']
    obj = Helo.find(params['id'])
    obj.update_attributes(:title => title, :content => content)
    redirect_to obj
  end

※関連コンテンツ

「初心者のためのRuby on Rails3入門」に戻る