http://qiita.com/mm36/items/3753cb2fa65feedb145b
の方法にそって確認画面を出すようにしましたが、このままでは入力画面に戻るすべがありません。
確認画面から「戻る」をクリックして入力画面に戻る方法です。
方法としてはセッションを使う、なんて人もいるようですが、hiddenで渡すのが一番!と個人的には思います。
方法としては
- 戻るボタンをsubmitボタンにしてname属性を指定する
- confirmで入力画面か確認画面か判定をさせているので、submitする前にconfirmのフラグを戻す
- 戻るボタンを押されたらコントローラー側で判断して入力画面を再び表示する
みたいな流れになると思います。
戻るボタンをsubmitボタンにしてname属性を指定する
app/views/inquiries/_form.html.erb
<%= form_for @inquiry, :html => { :class => "form-horizontal inquiry", :name =>"inquiryForm" } do |f| %> <%= f.submit t('helpers.submit.back'), :class => 'btn btn-default', :name=>'back',"onclick" => "back_form();" %>
confirmで入力画面か確認画面か判定をさせているので、submitする前にconfirmのフラグを戻す
app/views/inquiries/_form.html.erb
<script type="text/javascript"> <!-- function back_form(){ document.inquiryForm.elements["inquiry[confirm]"].value = ""; } // --> </script>
戻るボタンを押されたらコントローラー側で判断して入力画面を再び表示する
app/controllers/inquiries_controller.rb
def create respond_to do |format| if params[:back] #戻るボタンだったら入力画面をレンダリングする format.html { render :new } format.json { render json: @inquiry.errors, status: :unprocessable_entity } elsif @inquiry.save def inquiry_params params.require(:inquiry).permit(:name, :zip, :prefecture, :address1, :address2, :email, :content, :confirm, :back) #戻るボタンをパラメータとして追加
成果物
https://github.com/YoshiteruIwasaki/banana-mail/commit/5ce49c8acb64be0d8aa8d11a1e0ee6042b32ce50
https://github.com/YoshiteruIwasaki/banana-mail/commit/71566f1a4ea30c8ddc214fd344f5ce5a50a1886f