🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 6

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

解決済

1回答

712閲覧

[rails,bootstrap]フォロー,フォローを外す 2つのボタンの位置がずれる

YutoKubo

総合スコア13

Ruby on Rails 6

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

0グッド

1クリップ

投稿2020/12/14 02:19

編集2020/12/18 03:46

フォローボタンとフォローを外すボタンをおしたとき、それぞれの位置が画像のようにずれてしまいます。
まさかバックエンド側とは思えないのでとりあえずビューファイルだけ載せときます。

ご指摘お願いできればと思います。

イメージ説明

<index.html.erb>

<div class="container"> <div class="row"> <% @communities.each do |community| %> <div class="col"> <%= link_to community_path(community) do %> <div class="card" style="width: 14rem;"> <div class="card-image"> <%= attachment_image_tag community, :intro_image, fallback:"no-image.jpg", class:"rounded-top" %> </div> <div class="card-body"> <%= community.title %> <%= community.introduction%> </div> <% if current_user.present? && current_user.following?(community) %> <%= link_to community_follows_path(community.id), method: :delete, remote: true do %>              <button type="button" class="btn btn-primary btn-sm">フォローを外す</button> <%end%> <% else %> <%= link_to community_follows_path(community.id), method: :post, remote: true do %> <button type="button" class="btn btn-outline-primary btn-sm">フォロー</button> <%end%> <%end%> <%= community.follows.count %> </div> <%end%> </div>   <%end%> </div> </div> <style> .intro_image { width: 222px; height: 180px; } .row { padding-top: 30px; } .card { height:330px; } </style>

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

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

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

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

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

no1knows

2020/12/14 21:21

> 画像のようにずれてしまいます どこがずれているのでしょうか?
YutoKubo

2020/12/16 04:27 編集

フォローボタンを押すと青いフォローを外すボタンに切り替わるのですが、同じ位置で切り替わるのではなく、一段ずれた位置にボタンが出現してしまいます。画像のようにボタンが横一列に並んでいない状態です。
guest

回答1

0

ベストアンサー

全体的にコードを修正しました。h5やsmallなどは適宜調整してください。
またマウスオーバーの時に挙動が変になるのは、<a>タグの中に<a>タグを入れているためかもしれません。
Bootstrapはあまり詳しくないのですいません。。。


こういうフレームワークを利用して短時間で期待通りのコードを書く方法として下記のようなやり方があります。

①期待するデザインになるようなソースを見つける。公式が望ましい。
→今回は、BootstrapのサンプルページのAlbumを利用

②微調整を行う。今回は横4つのカード表示なのでcol-md-4col-md-3に変更。

③画像や文字列などのコードを置き換える。


上記方法を利用すると下記のような形になりますがいかがでしょうか?
あとは<%= link_to community_path(community) do %><%end%>をどのようにするか検討する必要があります。

<div class="row"> <% @communities.each do |community| %> <div class="col-md-3"> <div class="card mb-4 shadow-sm"> <%= attachment_image_tag community, :intro_image, fallback:"no-image.jpg", class:"card-img-top" %> <div class="card-body"> <h5 class="card-title"><%= community.title %></h5> <p class="card-text"><%= community.introduction%></p> <div class="d-flex justify-content-between align-items-center"> <% if current_user.present? && current_user.following?(community) %> <%= link_to community_follows_path(community.id), method: :delete, remote: true do %> <button type="button" class="btn btn-primary btn-sm">フォローを外す</button> <%end%> <% else %> <%= link_to community_follows_path(community.id), method: :post, remote: true do %> <button type="button" class="btn btn-outline-primary btn-sm">フォロー</button> <%end%> <%end%> <small class="text-muted"><%= community.follows.count %></small> </div> </div> </div> </div> <%end%> </div>

公式をみるとcard-bodyクラスにリンクなども含んでいるので、下記のようにやってみたらどうなりますか?

Diff

1<div class="card" style="width: 14rem;"> 2 <div class="card-image"> 3 <%= attachment_image_tag community, :intro_image, fallback:"no-image.jpg", class:"rounded-top" %> 4 </div> 5 6 <div class="card-body"> 7 <%= community.title %> 8 <%= community.introduction%> 9- </div> 10 11 <% if current_user.present? && current_user.following?(community) %> 12 <%= link_to community_follows_path(community.id), method: :delete, remote: true do %> 13 <button type="button" class="btn btn-primary btn-sm">フォローを外す</button> 14 <%end%> 15 <% else %> 16 <%= link_to community_follows_path(community.id), method: :post, remote: true do %> 17 <button type="button" class="btn btn-outline-primary btn-sm">フォロー</button> 18 <%end%> 19 <%end%> 20 <%= community.follows.count %> 21+ </div> 22</div> 23

投稿2020/12/16 05:46

編集2020/12/17 23:24
no1knows

総合スコア3365

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

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

YutoKubo

2020/12/17 10:29

ごしてきいただいた通りコードを修正しました。 立て続けにはなるのですが、カーソルをボタンではなくボタン周辺に合わせると、更新させていただいた画像のように、横二重線が現れ,その部分もボタンになってしまっています。
YutoKubo

2020/12/18 03:58

ありがとうございます!スタイリングに関しては手探り状態だったので大変助かります。 問題の箇所は直りました。ひとつだけ、幅の調整が欲しかったので<div class="card mb-4 shadow-sm" style="width: 14rem;">としました。 もうひとつわがままを聞いていただけると嬉しいのですが、画像下段の'もじこう'と書かれてるcardの文字がはみだしちゃっている箇所はどうしたらいいですか?(質問力がなくてすいません...。)
YutoKubo

2020/12/18 04:06 編集

空の投稿ができないようにvalidatesを設定し、card内に収まるように投稿ページに文字数制限をかけるのが無難かもしれないですね。ありがとうございます。
YutoKubo

2020/12/18 04:20

たびたび失礼します、link_toはどこに挿入したらよいでしょうか?cardの前に挿入するとカードが横3つになり横4つ並べられなくなっちゃいます。
no1knows

2020/12/18 08:05

> 画像下段の'もじこう'と書かれてるcardの文字がはみだしちゃっている箇所はどうしたらいいですか? この原因は、cardの高さを指定しているからです。 なので、ある程度文字数を制限する形が好ましいかと思います。 <h5 class="card-title"><%= community.title[0,6] %></h5> <p class="card-text"><%= community.introduction[0,30] %></p> https://www.javadrive.jp/ruby/string_class/index5.html あとはcard-groupを使って高さを自動調整する形でも良いかと思います。 > link_toはどこに挿入したらよいでしょうか? これはそのままcardをlink_toでまとめてしまうとフォローボタンがきちんと動かなくなる可能性が高いです。 そのためどういった仕様にするかによって大きく変わってくると思います。 また横3つになるようであればaタグにスタイル(padding-rightかmargin-rightなど)が当たっている可能性があるので、このカード内だけキャンセルすると良いかと思います。 https://saruwakakun.com/html-css/basic/chrome-dev-tool
YutoKubo

2020/12/24 06:18

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問