前提・実現したいこと
今まで稼働していたタイムライン(/posts/index)が突如表示されなくなりました。どうやらpost.rbのuserメソッドの読み込みがうまくいってないようです。
どう解決すればいいのかわからないのでご教授ください。
発生している問題・エラーメッセージ
該当のソースコード
index.html.erb
Ruby:index.html.erb
1<div class="main-content"> 2 <div class="container"> 3 <h1>TimeLine 4 <%= link_to(posts_new_path) do %> 5 <span> 6 <button type="button" class="btn btn-primary rounded-circle p-0" style="width:2rem;height:2rem;"> 7 + 8 </button> 9 </span> 10 <% end %> 11 </h1> 12 13 <% @posts.each do |post| %> 14 <div class="posts-index-item mb-20"> 15 <div class="posts-index-user"> 16 <!--avatar--> 17 <div class="posts-index-img d-inline"> 18 <%= link_to("/users/#{post.user.id}") do %> 19 <% if post.user.avatar.attached? %> 20 <%= image_tag post.user.avatar, class: "avatar-index rounded-circle mx-auto" %> 21 <% else %> 22 <img class="avatar-index rounded-circle mx-auto" src="<%= "/images/default_user.png" %>" alt="Userimage"> 23 <% end %> 24 <% end %> 25 </div> 26 <!--username--> 27 <div class="posts-index-username d-inline"> 28 <%= link_to post.user.username, "/users/#{post.user.id}", class: "text-dark font-weight-bold" %> 29 </div> 30 <span class="text-secondary"> 31 ・<%= distance_of_time_in_words_to_now(post.created_at) %>前 32 </span> 33 </div> 34 <!--content--> 35 <div class="post-content"> 36 <%= link_to(post.content, "/posts/#{post.id}", class: "text-dark no-deco") %> 37 </div> 38 </div> 39 <% end %> 40 </div> 41</div> 42
post.rb
ruby:post.rb
1class Post < ApplicationRecord 2 validates :content, {presence: true, length: {maximum: 140}} 3 validates :user_id, {presence: true} 4 5 has_one_attached :avatar 6 7 def user 8 return User.find_by(id: self.user_id) 9 end 10end
試したこと
- showアクションはうまくいっているのでやはりuserメソッドがおかしい
- userメソッドが使われているところだけ切り取るとうまく描画されるのでやはりuserメソッドがおかしい
補足情報(FW/ツールのバージョンなど)
Ruby 2.6.3
rails 5.2.4.4
devise,activestorage導入済
回答2件
あなたの回答
tips
プレビュー