登録前に確認画面を出して欲しい
と言われることが、まぁあります。
railsでconfirm画面を表示する方法はいろいろあるようなのですが、
とりあえず以下のようにしてみました。
使うアクションとviewは一つずつにしてみています。
まずはコントローラーは以下のような感じです。
class AaaController < ApplicationController def aaa
#最初の表示 unless params[:commit] params.delete(:confirm) return end #postされたら、まずはvalidateする @err = Hash.new @err[:val] = 1 if params[:val].blank?
#validateでエラーがあったら返す unless @err.size == 0 flash.now[:error] = "validate error" return end
#確認画面表示 unless params[:confirm] params[:confirm] = 'confirm' return end
#確認後の登録処理をこれ以降に書く
params.delete(:confirm) flash[:notice] = "登録したよ[#{params[:val]}]" end end
そしてviewは以下のような感じです。
<% if params[:confirm] %> <h1>確認</h1> <% else %> <h1>登録</h1> <% end %> <%= form_tag(:action => "aaa") %> <%= label_tag(:val, "val") %>: <% if params[:confirm] %> <%= params[:val] %> <%= hidden_field_tag :val,params[:val] %> <% else %> <%= text_field_tag("val",params[:val]) %> <% end %> <br /> <p class="form-footer"> <% if params[:confirm] %> <%= hidden_field_tag :confirm %> <%= submit_tag '作成', :class => "submit" %> <%= submit_tag 'キャンセル', :name => "cancel" ,:class => "submit" %> <% else %> <%= submit_tag '確認', :class => "submit" %> <% end %> </p> </form>
通常入力用と確認用のテンプレートを用意するのでもよいと思います。
実際に表示させると以下のような感じです。
validateで失敗すると以下のような感じ。
以下のようにちゃんと入力して「登録」をクリックすると
以下のような確認画面になります。
「キャンセル」をクリックすると確認前の画面に戻って、「作成」をクリックすると以下のように登録完了になります。
0 件のコメント:
コメントを投稿