質問編集履歴

2 情報の追加

ninpig04

ninpig04 score 33

2017/12/01 00:19  投稿

NoMethodErrorが出てしまって困っています。
###前提・実現したいこと
ここに質問したいことを詳細に書いてください
progateのRoRの練習問題をコピペしてツイートアプリを自分の開発環境上で動かそうとしています。しかしながら、一つひとつ着実にコピーしているはずが、途中で次のようなエラーがでました。
###発生している問題・エラーメッセージ
```
undefined method `image_name' for nil:NilClass
<div class="posts-index-item">
       <div class="post-left">
         <img src="<%= "/user_images/#{post.user.image_name}" %>">
       </div>
       <div class="post-right">
         <div class="post-user-name">
```
###該当のソースコード
```
<div class="main posts-index">
 <div class="container">
   <% @posts.each do |post| %>
     <div class="posts-index-item">
       <div class="post-left">
         
         <img src="<%= "/user_images/#{post.user.image_name}" %>">
       </div>
       <div class="post-right">
         <div class="post-user-name">
         
           <%= link_to(post.user.name,"/users/#{post.user.id}") %>
         </div>
         <%= link_to(post.content, "/posts/#{post.id}") %>
       </div>
     </div>
   <% end %>
 </div>
</div>
```
###試したこと
/public/user_images...などと書き変えてもダメでした
以前におこなったrails db:migrateがうまくいっていないのかと思ってもう一度実行しましたが、正常に実行されているようで、追加のメッセージはやはり出ませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
Rubyは2.3.1,RoRは5.0.0を使っています。
よろしくおねがいします。
よろしくおねがいします。
追加情報になります
user.rbのコード
```
class User < ApplicationRecord
   validates :name, {presence: true}
   validates :email, {presence: true, uniqueness: true}
   validates :password, {presence: true}
   
   def posts
       return Post.where(user_id: self.id)
   end
   
end
```
post.rbのコード
```
class Post < ApplicationRecord
   validates :content, {presence: true, length: {maximum: 140}}
   validates :user_id, {presence: true}
   
   def user
       return User.find_by(id: self.user_id)
   end
   
end
```
posts_controller.rbのコード
```
class PostsController < ApplicationController
   before_action :authenticate_user
   
   before_action :ensure_correct_user, {only: [:edit, :update, :destroy]}
   
   def index
       @posts = Post.all.order(created_at: :desc)
   end
   
   def show
       @post = Post.find_by(id: params[:id])
       @user = @post.user
   end
   
   def new
       @post = Post.new
   end
   
   def create
       @post = Post.new(
                        content: params[:content],
                        user_id: @current_user.id
                        )
                        if @post.save
                            flash[:notice] = "投稿を作成しました"
                            redirect_to("/posts/index")
                            else
                            render("posts/new")
                        end
   end
   
   def edit
       @post = Post.find_by(id: params[:id])
   end
   
   def update
       @post = Post.find_by(id: params[:id])
       @post.content = params[:content]
       if @post.save
           flash[:notice] = "投稿を編集しました"
           redirect_to("/posts/index")
           else
           render("posts/edit")
       end
   end
   
   def destroy
       @post = Post.find_by(id: params[:id])
       @post.destroy
       flash[:notice] = "投稿を削除しました"
       redirect_to("/posts/index")
   end
   
 
   def ensure_correct_user
       @post = Post.find_by(id: params[:id])
       if @post.user_id != @current_user.id
           flash[:notice] = "権限がありません"
           redirect_to("/posts/index")
       end
   end
   
end
```
  • Ruby

    13780 questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails 5

    5243 questions

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

1 ,,,の修正を行いました

ninpig04

ninpig04 score 33

2017/12/01 00:11  投稿

NoMethodErrorが出てしまって困っています。
###前提・実現したいこと
ここに質問したいことを詳細に書いてください
progateのRoRの練習問題をコピペしてツイートアプリを自分の開発環境上で動かそうとしています。しかしながら、一つひとつ着実にコピーしているはずが、途中で次のようなエラーがでました。
###発生している問題・エラーメッセージ
```
undefined method `image_name' for nil:NilClass
<div class="posts-index-item">
       <div class="post-left">
         <img src="<%= "/user_images/#{post.user.image_name}" %>">
       </div>
       <div class="post-right">
         <div class="post-user-name">```
         <div class="post-user-name">
```
###該当のソースコード
```Ruby on rails
```
<div class="main posts-index">
 <div class="container">
   <% @posts.each do |post| %>
     <div class="posts-index-item">
       <div class="post-left">
         
         <img src="<%= "/user_images/#{post.user.image_name}" %>">
       </div>
       <div class="post-right">
         <div class="post-user-name">
         
           <%= link_to(post.user.name,"/users/#{post.user.id}") %>
         </div>
         <%= link_to(post.content, "/posts/#{post.id}") %>
       </div>
     </div>
   <% end %>
 </div>
</div>
```
###試したこと
/public/user_images...などと書き変えてもダメでした
以前におこなったrails db:migrateがうまくいっていないのかと思ってもう一度実行しましたが、正常に実行されているようで、追加のメッセージはやはり出ませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
Rubyは2.3.1,RoRは5.0.0を使っています。
よろしくおねがいします。
  • Ruby

    13780 questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails 5

    5243 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る