2018年9月7日金曜日

Rails5 ブラウザの戻るボタンを押した時、直前の表示のまま画面が描画されない

中の人です。

Rails5でブラウザの戻るボタンを押した時、直前の表示のまま画面が描画されない動作をするのでなんとなく調べてみた。

controllerでrender plain:'hoge'

とした画面を開いてから、ブラウザの戻るボタンで同システム内の画面に遷移したところ
hogeが表示されたままURLが書き換わる。F5で再描画すると当然本来の画面が表示される。

以下をcontrollerに埋め込み、URL通りに描画されるか確認してみる。
    #w = ActionController::Base.helpers.javascript_include_tag 'jquery.js', 'data-turbolinks-track': 'reload'
    #w = '<script src="/assets/application-d22e7c94926be5a9960fdc36a34174b5ef9fff0d88ce78fae9ed74d47fd22377.js" data-turbolinks-track="reload"></script>'
    w = '<script src="/assets/application-d22e7c94926be5a9960fdc36a34174b5ef9fff0d88ce78fae9ed74d47fd22377.js"></script>'
h=<<-EOL
<!DOCTYPE html>
<html>
  <head>
    <title>タイトル</title>
    #{w}
  </head>

  <body>
    <h1>Test#show</h1>
development
  </body>
</html>
EOL
render html: ActionController::Base.helpers.raw(h),status: 200


 
結果、以下の行があると再描画される。中身はjquery.js
<script src="/assets/jquery-875821d1e3121b366b94ea86a07f3cbc5c76cb16a319bc62212c03a805ff20e9.js" ></script>


ActionController::Base.helpers.javascript_include_tag 'jquery.js'で書くと再描画されない。

内部まで踏み込まないけど、不思議な動作。