同僚がハマっていたのでヘルプで入って見たらこうなってたよ っていうメモ
問題
コントローラーで保存したはずのリクエストセッションが取得出来ない。
(そもそも保存出来てない?)
コード
hoge.blade.php
@extends('base')@section('content')<form><inputtype="text"name="name"><inputtype="text"name="age"><buttontype="button"onclick="postNext()">Next</button>
</form>@endsection@section('js')<scripttype="text/javascript"src="js/hoge.js"></script>
@endsection
hoge.js
functionpostNext(){$('form').attr('action',postUrl);$('form').submit();}
色々と端折っているものの、正常に動く形です。
原因
chromeのdeveloper toolsでNextを押下した時のNetworkタブを確認していたら画面遷移直前でerrorのpostを発見。
継承しているbase.blade.php
の中に<form> ~ </form>
が存在していた。
その状態でタグ指定でsubmitしていたため、正常なsubmitと不正なsubmitを同時に行っていた。
(成功するパターンもあったのが、ここら辺の判断をどうやっているかまでは追っていない)
修正
本来postされるべきformにIDを付けてJSファイルをタグ指定ではなく、ID指定でsubmitするようにした。
あとがき
同僚がなぜこのような実装したかまでは言及していない。(めちゃくちゃ切迫したスケジュールの中で頑張ってるので聞けなかった)
個人的にはjsでsubmit記述する必要があるのかな?とも思った。
submit前に処理を入れたかったとしても以下の形で良い気がする
$('#hoge_form').submit(function() {
~
});
あんまりこういう事はないと思うけど、一体験談として。