5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Rails】renderを使った時のリロード対策

Last updated at Posted at 2019-10-13

はじめに

登録画面(new) → 登録処理(create)の遷移のとき
以下の画像のフォームから登録をするときに
バリデーションに引っかかって登録画面に戻り、ページをリロードしたらエラーでた。
image.png

原因は登録処理のURLでページをリロードしたため。
renderで登録画面に戻ってもURLは登録処理のままで更新されない。
renderはあくまでもビューを表示するだけっぽい。

解決方法

JavaScriptで登録画面を読み込む時にURLを書き換える

sample.js
function addToNewUrl() {
  let path = location.pathname;
  let pattern = /^.*\/new.*$/

  // URLが正しければ変更は不要
  if(path.match(pattern)) return;
  
  // URLを変更
  history.replaceState('', '', `${ path }/new`)
}

以下のようにして実行

new.html.slim
javascript:
  window.onload = addToNewUrl();

まとめ

少しでも参考になれば幸いです。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?