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

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

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

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

0回答

997閲覧

【Ajax】edit時のモーダルウインドウが正常に閉じない

tomomomo

総合スコア22

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2021/10/19 03:36

現状と問題

現在railsでツイッタークローンアプリを作成しております。
ユーザー詳細画面にて編集機能を非同期処理のmodalウインドウにて実装しているのですが、変更をした後にupdateは非同期で行われるのですが、
編集フォームがそのまま画面に埋め込まれてしまうということが起きています。
参考のGIFを載せさせていただきます。
イメージ説明

該当コード

UserShowHTML

1<%= link_to "プロフィール編集", edit_user_path(@user), remote: true, class: "btn btn-primary w-auto mt-2" %> 2<div id="user-modal" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true"></div>

edithtmlerb

1//formの_edit.html.erbです。 2<div class="modal-dialog"> 3 <div class="modal-content"> 4 <h3>プロフィールを編集</h3> 5 <%= form_with model: @user, url: user_path, method: :patch, remote: true do |f| %> 6 <div class="field"> 7 <%= attachment_image_tag @user, :profile_image, format: 'jpeg', size: "100x100" %> 8 <%= f.attachment_field :profile_image, :placeholder => "プロフィール画像" %> 9 </div> 10 <div class="field"> 11 <%= f.label :name %><br /> 12 <%= f.text_field :name, autofocus: true %> 13 </div> 14 <div class="field"> 15 <%= f.label :自己紹介 %><br> 16 <%= f.text_area :introduction, autofocus: true %> 17 </div> 18 <%= f.submit "保存", class: "btn btn-primary" %> 19 <% end %> 20 </div> 21</div>

editjserb

1//formのlink_toでremoteをつけることでedit.js.erbが読み込まれモーダルウインドウを表示させる 2$("#user-modal").html("<%= escape_javascript(render 'edit') %>"); 3$("#user-modal").modal("show");

updatejserb

1//update,モーダルウインドウを閉じる処理 2$(".introduction").html("<%= j(render("edit", user: @user)) %>"); //おそらくここで問題? 3$("#user-modal").modal("hide");

UserController

1class UsersController < ApplicationController 2 3 before_action :authenticate_user!, except: [:index] 4 5 def edit 6 @user = User.find(params[:id]) 7 end 8 9 def update 10 @user = User.find(params[:id]) 11 respond_to do |format| 12 if @user.update(user_params) 13 format.js { @status = "success"} 14 else 15 render "edit" 16 format.js { @status = "fail"} 17 end 18 end 19 end 20 21 private 22 23 def user_params 24 params.require(:user).permit(:name, :introduction, :profile_image) 25 end 26 27end

実装時に参考にさせていただいた記事はこちらです。

やってみたこと

.js.erbの処理を一つずつ削除して問題のある箇所は$(".introduction").html("<%= j(render("edit", user: @user)) %>"); ではないかというところまで来ましたが、引数に何を渡すべきなのかというところで躓いています。
もちろん他の部分でもミスがあるかもしれません。

何卒よろしくお願いいたします。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問