RubyのActiveRecordだけを使っているのであれば、hamunofuneさんので正解です。
(Viewの方で表示するための@sampleの取得はしていないようですが)
ただし、乗せているサンプルコードを見る限り、Rubyではなく、RubyOnRailsを利用されているのだと思います。
Railsだと仮定するなら以下の様な構成になるかと。
Ruby
1
2# app/controllers/hoge_controller.rb(コントローラ)
3
4class HogeController < ApplicationController
5
6 def index
7 @sample = Sample.all
8 end
9
10 def update
11 # この時点でパラメータは以下の様な感じで入ってくる
12 # {id: 1, sample: {title: "hoge"}} パラメータはparamsでアクセスできる
13 if Sample.update(params[:id], params[:sample])
14 flash[:success] = "sample is updated"
15 else
16 flash[:error] = "sample update failed"
17 end
18 redirect_to action: :index
19 end
20
21 # 新規作成、削除、等々のメソッド(アクション)
22end
23
Ruby
1# app/models/sample.rb(モデル)
2
3class Sample < ActiveRecord::Base
4 attr_accessible :title
5end
6
html
1<!-- app/views/sample/index.html.erb(ビュー) -->
2
3<table>
4 <% @samples.each do |sample| %>
5 <% @sample = sample %><!-- ここはあんまり行儀が良くないですが --->
6 <tr>
7 <%= form_tag sample_path(@sample), method: :put do %>
8 <td><%= text_field :sample, :title %></td>
9 <td><%= submit_tag "更新" %></td>
10 <!-- ここのフォームで送られるパラメータはsample.id = 1, sample.title = "hoge"として -->
11 <!-- {id: 1, sample: {title: "hoge"}} -->
12 <% end %>
13 </tr>
14 <% end %>
15</table>
16
Ruby
1# config/routes.rb
2
3 resource :sample
4 root to: "sample#index"
基本的に、Railsの考え方だと、Viewから渡ってきたパラメータをいじり回してDBに格納するためのものをModelに渡すのはControllerの役割です。
ModelがDBに格納するための仕組みは、ActiveRecordに組み込まれているので、ControllerでModelのパラメータを更新して、Modelのsaveを呼びます。
Model側では、アトミックな処理をしたいとき等にメソッドをオーバーライドするとかの処理を書くのが一般的でしょう。