別ウィンドウを使ったフォームの作成


Ruby on Railsで編集画面で別ウィンドウを開いて編集作業が完了したら、ウィンドウをクローズして元のページをリロードする処理のサンプルです。
管理画面などで、編集を複数のウィンドウで並行して作業をしたい場合などに有効です。

別ウィンドウで開くリンクは次のように作成します。

<%= link_to article_path(@article), '編集', onclick: "window.open('フォームのURL', 'newWindowId1', 'width=400, height=400 menubar=0 toolbar=0 scrollbars=1 resizable=1'") %>

別ウィンドウで開かれたフォームをユーザーが編集、投稿したらController側で次のように処理します。

class ArticlesController < ApplicationController
def update
if @article.update article_params
render :closed_and_reloaded, layout: false
else
render :edit
end
end
private
def article_params
#...
end
end

View側app/views/layouts/closed_and_reloaded.html.erbは次のように記述します。

<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html>
<body>
<script>
window.opener.location.reload();
window.close();
</script>
</body>
</html>

🎳 参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍