STEP 14: 確認画面(4)
2010/02/26
STEP 11-13で行ったことをタスクを編集する場合についても行って、「確認画面」の実装を終わりにしましょう。
ルーティングを修正します。
$ edit config/routes.rb
ActionController::Routing::Routes.draw do |map| map.root :controller => 'top', :action => 'index' map.resources :tasks, :new => { :new => :post }, :member => { :simple => :get, :finish => :put, :edit => :put, :confirm => :put }, :collection => { :unfinished => :get, :confirm => :post } end
:member
オプションに要素 :edit => :put
と :confirm => :put
を追加しています。
edit
アクションのテンプレートを修正します。
$ edit app/views/tasks/edit.html.erb
<h1>タスクの編集</h1> <% form_for [ :confirm, @task ] do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <% end %>
$ edit app/views/tasks/_form.html.erb
(省略) <div class="buttonGroup"> <input type="button" value="戻る" disabled="disabled" /> <%= f.submit '次へ' %> </div>
confirm
アクションを修正します。
$ edit app/controllers/tasks_controller.rb
def confirm if request.post? @task = Task.new(params[:task]) else @task = Task.find(params[:id]) @task.attributes = params[:task] end if @task.valid? render :action => 'confirm' else render :action => request.post? ? 'new' : 'edit' end end end
部分テンプレート button_to_back
を修正します。
$ edit app/views/tasks/_button_to_back.html.erb
<% form_for(@task, :url => @task.new_record? ? [ :new, :task ] : [ :edit, @task ]) do |f| %> <% [ :subject, :due_date, :done, :note ].each do |attr| %> <%= f.hidden_field attr %> <% end %> <%= f.submit '戻る' %> <% end %>
edit
アクションを修正します。
$ edit app/controllers/tasks_controller.rb
def edit @task = Task.find(params[:id]) @task.attributes = params[:task] if request.put? end end
ブラウザで動作を確認します。
「次へ」ボタンをクリックします。
「戻る」ボタンをクリックすると…
一応、これで「確認画面」は完成です。