前提・実現したいこと
いつも大変お世話になっております。
ruby on rails6でブログを投稿できるポートフォリオサイトを制作中です。
Bootstrap4を使用しているのですが、ユーザーがログアウトするとレイアウトが崩れてしまいます。
その表示の差をなくしたいと思いこちらに質問させて頂きました。
Bootstrap4はbootstrapのgemを追加する方法で導入しました。
ログアウトすると表示が崩れるだけで機能は正常に動きます。
Railsアプリで Bootstrap 4 を利用するの記事を参考にしました。
ブログの記事を入力する部分にActionTextを使用しています。
発生している問題
ユーザーがログアウトするとグリッドシステムを使用している部分の表示が崩れてしまう。
該当のソースコード
view/posts/index.html/erb
<%= render partial: 'layouts/flash' %> <div class="bg-sample"> <h3 class="text-lg-center mt-5">地球と人のつながりをもっと身近なものに。</h3> <p class="text-lg-center text-muted">みんなの投稿で普段の生活をもっと未来につなげよう</p> </div> <br> <br> <hr> <% breadcrumb :root %> <div class="container"> <div class="row"> <div class="col-lg-8"> <% @posts.each do |post| %> <div class="card mb-4"> <%= image_tag post.image.variant(resize:'300x400').processed, class: "card-img-top "%> <div class="card-body"> <h2 class="card-title"><%= post.title %></h2> <p class="card-text"><%= strip_tags(post.content.to_s).gsub(/[\n]/,"").strip.truncate(20)%></p> <div class="m-2"> <%= render partial: 'posts/posts', locals: { post: post }%> </div> <div class="col"> <a href="/users/<%= post.user.id %>", class="d-flex justify-content-start align-items-center", style="text-decoration: none"> <% if post.user.image.attached? %> <%= image_tag post.user.image, class:"avatar m-1"%> <% else %> <%= image_tag ("defo.jpg"), class:"avatar m-1"%> <% end %> <div class="flex-column"> <p class="h4 text-bold text-muted "><%= post.user.nickname %></p> <span class="text-muted small">投稿日時:<%= post.created_at.to_s(:datetime_jp) %></span> </div> </a> </div> </div> <div class="card-footer text-muted"> <div class="field"> <%= link_to '詳細ページ', post, class: "btn btn-outline-secondary form-control " %> </div> </div> </div> <% end %> </div> <div class="col-lg-4"> <div class="card"> <div class="card-body"> <h5 class="card-title">タグ一覧</h5> <h6 class="card-subtitle mb-2 text-muted">クリックで関連した記事が見れます</h6> <% @tags.each do |tag| %> <span class="badge badge-pill badge-info m-1 p-2"> <%= link_to tag.name, posts_path(tag_name: tag.name), class: "text-white"%> </span> <% end %> <a href="#" class="card-link">Card link</a> <a href="#" class="card-link">Another link</a> </div> </div> </div> </div> </div> <%= paginate @posts %> <div class="container" style="margin-bottom:100px;"></div>
view/posts/show.html/erb
<hr> <% breadcrumb :post %> <div class="container"> <div class="row"> <div class="col-md-7 offset-3"> <%= image_tag @post.image.variant(resize:'700x500').processed %> <br> <br> <h2 class="font-weight-bold mb-1"> <%= @post.title %> </h2> <%= render partial: 'posts/posts', locals: { post: @post }, class:"m-2"%> <a href="/users/<%= @post.user.id %>", class="d-flex", style="text-decoration: none"> <% if @post.user.image.attached? %> <%= image_tag @post.user.image, class:"avatar m-1"%> <% else %> <%= image_tag ("defo.jpg"), class:"avatar m-1"%> <% end %> <div class="flex-column "> <p class="h4 text-bold text-muted "><%= @post.user.nickname %></p> <span class="text-muted small">投稿日時:<%= @post.created_at.to_s(:datetime_jp) %></span> </div> </a> <div class="card"> <%= @post.content %> </div> </div> </div> </div> <div class="container col-md-7 offset-3"> <hr> <div class="text-center text-muted mb-4"> <h4>タグ</h4> <%= @comments_count %> </div> <div class=""> <%= render 'posts/tag_list', tag_list: @post.tag_list %> </div> <hr> <div class=" text-center text-muted mb-4"> <h4>コメント</h4> <%= @comments_count %> </div> <div class=" mx-auto"> <% if @comments %> <% @comments.each do |comment| %> <% if user_signed_in? %> <div class="row"> <p> <div class="col-10"> <strong><%= link_to comment.user.nickname, "/users/#{comment.user_id}" %>:</strong> <%= comment.text %> <% if current_user.id == comment.user_id %> </div> <div class="col-2"> <%= link_to "削除", post_comment_path(@post, comment), method: :delete , class: "btn btn-outline-secondary btn-sm "%> </div> <% end %> </p> </div> <% else %> <p> <strong> <%= comment.user.nickname %>:</strong> <%= comment.text %> </p> <% end %> <% end %> <% if current_user %> <div class="container "> <hr> <%= form_with(model: [@post, @comment], local: true) do |form| %> <div class="form-group mt-3"> <%= form.text_area :text, placeholder: "コメント", rows: "2", class: "form-control" %> <div class="text-right"> <%= form.submit "SEND", class: "btn btn-outline-secondary "%> <% end %> </div> </div> <% else %> <strong><p class="text-center">※※※ コメントするにはログインしてください ※※※</p></strong> <% end %> <% end %> </div> </div> </div> <div class="container" style="margin-bottom:200px;">
view/users/show.html/erb
<div class="container" style="margin-top:20px;"> <%= render 'userhed' %> <hr> <div class="album py-5 bg-light"> <% breadcrumb :user %> <div class="container"> <div class="row"> <% @posts.each do |post| %> <div class="col-md-4"> <div class="card text-center h-100"> <td><%= image_tag post.image.variant(resize:'300x200'), class: "card-img-top" %></td> <h4 class="card-text"><%= post.title %></h4> <div class="card-body "> <%= strip_tags(post.content.to_s).gsub(/[\n]/,"").strip.truncate(20)%> <%= render partial: 'posts/posts', locals: { post: post } %> <div class="d-flex justify-content-between align-items-center"> <div class="btn-group mt-3 mx-auto"> <% if user_signed_in? && current_user.id == post.user_id%> <%= link_to '編集', edit_post_path(post.id), method: :get, class: "btn btn-sm btn-outline-primary" %> <%= link_to '削除', post, method: :delete, data: { confirm: 'Are you sure?' } , class: "btn btn-sm btn-outline-primary"%> <% else %> <%= link_to '詳細', post, class: "btn btn-sm btn-outline-primary" %> <%= link_to 'トップページ', posts_path, class: "btn btn-sm btn-outline-primary" %> <% end %> </div> </div> <hr> <small class="text-muted mt-4"><%= post.created_at.to_s(:datetime_jp) %></small> </div> </div> </div> <% end %> </div> </div> </div> <%= paginate @posts %> <div class="container" style="margin-bottom:200px;">
試したこと
一度Bootstrap 4のgemをアンインストールしてみてCDNで表示しようとやってみたのですが、アンインストールする前よりもレイアウトが崩れてしまいました。そしてログアウトしようとするとエラーが出るなど他の機能にも支障が出たために元に戻しました。
BootstrapのCDNのみの設定でも同じように表示の崩れは治りませんでした。
どうやら表示が崩れている部分はeach文の部分のようですが、ログインの有無によって表示が変わる原因はわかりません。
できることならば現状のやり方のままで修正を加えてログインしていない状態でもうまく表示したいです。
初心者ゆえ説明や理解が足りない部分もあると思いますが解決法を教えてもらえるとありがたいです。
どうかよろしくお願いします。
補足情報(FW/ツールのバージョンなど)
ruby_version 2.6.5
Rails 6.0.3.4
Bootstrap 4.1.1
回答1件
あなたの回答
tips
プレビュー