質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

551閲覧

rails5 のturbolinksの挙動(Createの後とUpdateの後だと読み込むJSが違う?)

Yuinyan

総合スコア312

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/08/28 10:55

編集2017/08/28 10:59

###前提・実現したいこと

画面の構成として、

index.html.erbにtableがあってUser一覧が表示されています。

追加ボタンを押すとModalが表示され、入力して、Createすると右上にFlash(PNotifyを利用)
が表示され、また、indexにredirectされます。

Createの流れ

index画面 ↓ 追加ボタン ↓ Modal ↓ create ↓ Flash表示 ↓ index画面 * この後、2人目のユーザーを連続することも可能。

同様に、各rowに設置された、editボタンを押すと、edit用のModalが立ち上がり、updateすると、右上にFlashが表示され、またindexにredirectされます。

Updateの流れ

index画面 ↓ 編集ボタン ↓ Modal ↓ update ↓ Flash表示 ↓ index画面 * この後、別ユーザーを連続して、編集できない。**(reloadするとできる。)**

上記のように、createとupdateの挙動が異なり、updateの方は、いちいちリロードして、jsを読み込ませないと、うまくupdateできません。

###発生している問題・エラーメッセージ

jsのconsoleをみてみると、createとupdateとで異なる部分がありました。
どちらも1度目のmodalで処理後。(つまり、2度目の前)

Createの場合

JSのconsole create

Updateの場合

JSのconsole update

推測として、updateのturbolinksの場合のturbolinksの挙動が上手くいっていないということは何となくわかるのですが、どこをどう直していいのか、分かりません。恐れ入りますが、教えてください!

###該当のソースコード

ruby

1 2Index 3 4 def index 5 6 @user_update_form = User::UserManagementForm.new 7 @user_management_form = User::UserManagementForm.new 8 @users = User.all 9 10 11 end 12 13 14Create 15 16 def create 17 # puts params 18 @user_management_form = User::UserManagementForm.new(user_management_params) 19 if @user_management_form.submit 20 redirect_to user_managements_path, flash: { success: t('.success') } 21 else 22 error_message = @user_management_form.errors.full_messages.join('\n') 23 redirect_to user_managements_path, flash: { error: error_message } 24 end 25 end 26 27Update 28 29 @user_update_form = User::UserManagementForm.new(user_management_params.merge("id" => params[:id])) 30 if @user_update_form.update 31 redirect_to user_managements_path, flash: { success: t('.success') } 32 else 33 error_message = @user_management_form.errors.full_messages.join('\n') 34 redirect_to user_managements_path, flash: { error: error_message } 35 end 36 end 37

###試したこと

redirect_to user_managements_path の後に、'data-turbolinks' => falseをつけてみたりしました。

###補足情報(言語/FW/ツール等のバージョンなど)
rails5.1.3
webpackerを利用しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ご想像の通り、Turbolinksの挙動が以前と変わったようです。
Turbolinks5についてまとめてみるなど、Qiitaで調べてみてください。

Ruby、Railsだけでなく、HTMLとJSの知識が必要となります。HTTPの仕組みをおさえ、クライアント側の問題(HTML、JS)なのか、サーバー側の問題(Rails)なのか、課題を切り分けられなければなりませんので、頑張ってください。

投稿2017/09/02 02:14

NCC1701

総合スコア1680

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問