@helo = Helo.find(params['id'])Viewテンプレート側では、フォームの作成を<%= form_for(@helo) do |f| %>というようにして行なっています。@heloインスタンス変数の内容を引数に渡してform_forを呼び出しているわけですね。この@heloに、あらかじめ検索しておいたModelインスタンスを渡しておけば、それに応じて自動的にフォームが生成されます。もちろん、フォームの各コントロールには、Modelインスタンスに保管されている各データが自動的に設定され表示されます。
obj = Helo.find(params[:id])findでは、params[:id]というようにして送られたパラメータからIDの値を取り出しています。そしてupdate_attributesでは、引数にparams[:helo]を指定しています。これで、そのまま送信されたフォームの内容がupdate_attributesで更新されテーブルに反映されるのです。なんか騙されてるんじゃ?と思うくらいに簡単ですね。
obj.update_attributes(params[:helo])
http:/ドメイン/helos/番号/edithelosの後に更新するレコードのID番号が、その後にeditが付きます。この後、routes.rbを修正する関係で、こう変わります。
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
※edit.html.erb <p><%= @msg %></p> <hr> <%= form_for(@helo) do |f| %> <% if @helo.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(@helo.errors.count, "error") %> prohibited this helos from being saved:</h2> <ul> <% @helo.errors.full_messages.each do |msg| %> <li><%= msg %></li> <% end %> </ul> </div> <% end %> <div class="field"> <%= f.label :title %><br /> <%= f.text_field :title %> </div> <div class="field"> <%= f.label :content %><br /> <%= f.text_field :content %> </div> <div class="actions"> <%= f.submit %> </div> <% end %> ※edit/updateアクション def edit @title = "サンプルレイアウト" @header_content = "データの更新" @msg = "データの更新を行います。" @helo = Helo.find(params['id']) end def update obj = Helo.find(params[:id]) obj.update_attributes(params[:helo]) redirect_to obj end
<< 前へ | 次へ >> |