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

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

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

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

HTML5

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

JavaScript

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

jQuery

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

3090閲覧

【Ajax】railsでモーダルウィンドウの実装

tomomomo

総合スコア22

Ruby on Rails 5

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

HTML5

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

JavaScript

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

jQuery

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/10/14 15:32

編集2021/10/16 08:07

現状と実現したいこと

現在railsでツイッタークローンアプリをポートフォリオとして作成しております。
ユーザー詳細画面で、自身のツイートを一覧で表示しているのですが、そのツイートの編集をモーダルウインドウを使用して非同期処理をしたいと考えております。
編集と削除のリンクを各ツイートに仕込んである縦三点リーダをクリックしたときに表示するように記述しています。

そこで、
1 縦三点リーダをクリック
2 ’Edit’リンクタグ表示
3 ’Edit’リンクタグをクリック
4 編集画面モーダルウインドウ表示
の流れを実現したいと考えております。

問題

実装初期段階でつまづいているのですが、bootstrap modal formを参考しようと思い、こちらのbootstrap modal formを参考にしようと思い、
コピペしたところレイアウトが崩れてしまいまい実装が不可能な状況です。
該当コードについて、下記いたします。

該当コード

HTML

1<div class="more-wrapper"> 2 <button class="project-btn-more" onclick="verticalThreeReader()"> 3 <svg xmlns="http://www.w3.org/2000/svg " width="24 " height="24 " viewBox="0 0 24 24 " fill="none " stroke="currentColor " stroke-width="2 " stroke-linecap="round " stroke-linejoin="round " class="feather feather-more-vertical "> 4 <circle cx="12 " cy="12 " r="1 " /> 5 <circle cx="12 " cy="5 " r="1 " /> 6 <circle cx="12 " cy="19 " r="1 " /> 7  </svg> 8  <!--縦三点リーダ--> 9  <div class="vertical-three-reader"> 10   <ul> 11 <!--ここから下がコピーしたbootstrap modal form--> 12 <!--<li><button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">--> 13 <!-- Launch demo modal--> 14 <!--</button></li>--> 15 16 <!--Modal --> 17 <!--<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">--> 18 <!-- <div class="modal-dialog" role="document">--> 19 <!-- <div class="modal-content">--> 20 <!-- <div class="modal-header">--> 21 <!-- <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>--> 22 <!-- <button type="button" class="close" data-dismiss="modal" aria-label="Close">--> 23 <!-- <span aria-hidden="true">&times;</span>--> 24 <!-- </button>--> 25 <!-- </div>--> 26 <!-- <div class="modal-body">--> 27 <!-- ...--> 28 <!-- </div>--> 29 <!-- <div class="modal-footer">--> 30 <!-- <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>--> 31 <!-- <button type="button" class="btn btn-primary">Save changes</button>--> 32 <!-- </div>--> 33 <!-- </div>--> 34 <!-- </div>--> 35 <!--</div>--> 36   <li> <%= link_to("Edit", edit_post_path(post.id), {class: "list-group-item list-group-item-action"}) %></li> 37 <li><%= link_to("Delete", post_path(post.id), {method: :delete, class: "list-group-item list-group-item-action"}) %></li> 38   </ul> 39  </div> 40  </button> 41 </div>

コメントアウトしている部分がbootstrapの部分です。
コメントアウトトをした状態だと、三点リーダをクリックした際にlink_toの2つが表示されるようになっています。
しかし、コメントを外すとhidden設定してあるlink_toが現れ、明らかにレイアウトが崩れてしまいます。

javascript

1document.addEventListener('DOMContentLoaded', function() { 2 3 const toggleMenu = ({ currentTarget }) => { 4 const menu = currentTarget.querySelector('.vertical-three-reader'); 5 menu.style.visibility = menu.style.visibility !== 'hidden' ? 'hidden' : 'visible' 6 } 7 8 document.querySelectorAll('.project-btn-more').forEach(btn => { 9 toggleMenu({ currentTarget: btn }); 10 btn.addEventListener('click', toggleMenu); 11 }); 12 13 14});

CSS

1.project-boxes { 2 margin: 0 -8px; 3 overflow-y: auto; 4 &.jsGridView { 5 display: flex; 6 flex-wrap: wrap; 7 .project-box-wrapper { 8 width: 33.3%; 9 word-wrap: break-word; 10 } 11 } 12 &.jsListView { 13 .project-box { 14 // display: flex; 15 border-radius: 10px; 16 position: relative; 17 >* { 18 margin-right: 24px; 19 // margin-bottom: 24px; 20 } 21 } 22 .more-wrapper { 23 position: absolute; 24 right: 16px; 25 top: 16px; 26 } 27 .project-box-content-header { 28 order: 1; 29 max-width: 120px; 30 overflow-wrap: break-word; 31 } 32 .project-box-header { 33 order: 2; 34 display: block; 35 36 } 37 .project-box-footer { 38 order: 3; 39 padding-top: 0; 40 flex-direction: column; 41 justify-content: flex-start; 42 } 43 .project-box-footer:after { 44 display: none; 45 } 46 .participants { 47 margin-bottom: 8px; 48 } 49 .project-box-content-header p { 50 text-align: left; 51 overflow: hidden; 52 white-space: nowrap; 53 text-overflow: ellipsis; 54 } 55 .project-box-header>span { 56 position: absolute; 57 bottom: 16px; 58 left: 16px; 59 font-size: 12px; 60 } 61 .box-progress-wrapper { 62 order: 3; 63 flex: 1; 64 } 65 } 66} 67 68

試してみたこと

bootstrapの文ではbutton_toやdivが多く使われていたため干渉を起こしているのかと考え、button_toをliタグで囲ってみたりしましたがうまくいきません。
divに関しては、link_toの2行を囲んでも特に変化はなかったので問題ないのではないかと考えています。

jsの記述に関してもレイアウトが崩れることに関しては問題ないと考えています。

理想の形としましては、下の画像にもありますがEditというリンクを押し、モーダルウインドウを表示することです。

最後に、レイアウトが崩れた際の写真を添付いたします。

崩れた際の画像
イメージ説明
通常の画像(1つ目のツイートのみ三点リーダをクリックしてリンクを表示させています)

以上、何卒お力添えいただけると幸いです。

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

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

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

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

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

FKM

2021/10/15 07:04

レイアウトが崩れているってことはCSSの制御が影響あると思われます。このモーダルを制御しているCSSは明示できますか?
tomomomo

2021/10/16 08:08

遅くなり申し訳ありません。 該当箇所のCSSをお送りいたしました。 https://codepen.io/aybukeceylan/pen/OJRNbZp こちらのコードペンを参考にしているため、CSSはあまり変更加えていません。
guest

回答1

0

自己解決

問題をあげなおします。

投稿2021/10/18 14:26

tomomomo

総合スコア22

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問