前提・実現したいこと
Docker上で、Railsを立ち上げてツイッターのようなサービスを作ってます。
(エラー内容)
Model上で行った変更が、サーバー上にうまく反映されずエラーになってしまいます・・・。
(詳細)
投稿とユーザーを紐づけて、投稿一覧にユーザー情報も併せて表示するため、
モデル(post.rb)に、インスタンスメソッド(def.user)を以下のように定義しました。
ターミナル上では、インスタンスメソッドを用いた、データの取り出し・編集ができますが、
サーバー上では、以下のようなエラーが表示され、うまく反映されません。
発生している問題・エラーメッセージ
NoMethodError in Posts#index
Showing /app/app/views/posts/index.html.erb where line #5 raised:
undefined method `name' for nil:NilClass
該当のソースコード
index
1#index.html.erb 2 3<div class="main posts-index"> 4 <div class="container"> 5 <% @posts.each do |post| %> 6 <div class="posts-index-item"> 7 **<%= link_to(post.user.name, "/users/#{post.user.id}") %>** 8 <%= link_to(post.content, "/posts/#{post.id}") %> 9 </div> 10 <% end %> 11 </div> 12</div> 13 14
Model
1#post.rb 2 3class Post < ApplicationRecord 4 validates :content, {presence: true, length: {maximum: 140}} 5 validates :user_id, {presence: true} 6 7 **def user 8 return User.find_by(id: self.user_id) 9 end** 10 11end 12
その他
Dockerfile
1FROM ruby:2.6.3-stretch 2 3RUN gem install rails 4 5RUN apt-get update && \ 6 apt-get install -y nodejs mysql-client 7 8COPY Gemfile /Gemfile 9COPY Gemfile.lock /Gemfile.lock 10RUN bundle install
試したこと
・サーバーの再起動 rails restart
・dockerの再起動
ご回答いただけますと幸いです。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/11 09:22