前提・実現したいこと
ドットインストールを見ながら第12回目(https://dotinstall.com/lessons/basic_rails_v3/41812)まで実際に作って進めていたんですが、show.html.erbを作成してブラウザで確認すると、以下のエラーメッセージが発生しました。
環境はローカル開発環境ではなくmacで行っています。
動画どおり順を追ってやってきたので、データベースや他のソースコードは多分用意されていると思います。
発生している問題・エラーメッセージ
NoMethodError in Posts#show undefined method `title' for nil:NilClass Extracted source (around line #1): 1 <h2><%= @post.title %></h2> 2 <p><%= @post.body %></p>
該当のソースコード
show.html.erbのソースコード
ruby
1<h2><%= @post.title %></h2> 2<p><%= @post.body %></p>
post_controller.rbのソースコード
Ruby
1class PostsController < ApplicationController 2 def index 3 @posts = Post.all.order(created_at: 'desc') 4 end 5 6 def show 7 @post = Post.find(params[:id]) 8 end 9end
データベース内のテーブルpostsの中身
sqlite> select * from posts; id title body crea upda ---- ------------- ---- ---- ---- 1 title 0 body 0 2018-03-04 07:37:47.681182 2018-03-04 07:37:47.681182 2 title 1 body 1 2018-03-04 07:37:47.686789 2018-03-04 07:37:47.686789 3 title 2 body 2 2018-03-04 07:37:47.691107 2018-03-04 07:37:47.691107 4 title 3 body 3 2018-03-04 07:37:47.695788 2018-03-04 07:37:47.695788 5 title 4 body 4 2018-03-04 07:37:47.700430 2018-03-04 07:37:47.700430
routes.rbの中身
ruby
1Rails.application.routes.draw do 2 # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 3 4 resources :posts 5 6 root 'posts#index' 7end
試したこと
データベースにはtitle、bodyの要素を持ったpostsというテーブルがあることを確認済みです。
ソースコードのpostの部分、postsに変えてみても同じエラーが出ました。
今までのmyblogフォルダを一度消してもう一度最初から作り直しても変わりませんでした。
関係ないかもしれませんが、CSSもすぐに反映されないので、
$ bundle exec rake assets:precompile
を実行しましたが、直っていません。
補足情報(FW/ツールのバージョンなど)
Rails v5.1.5
Ruby v2.5.0
初心者なので、質問に足りない情報があると思います。
あればそれも教えてください。
###追記
①アクセスしたURL(最後の数字は記事のIDによって変わります)
http://[自分のIPアドレス]:3000/posts/3
②routes.rbの内容をソースコードのところに載せました
③show.html.erb のファイルパス
/Users/ユーザー名/Programming/Rails/myblog/app/views/posts/show.html.erb
回答3件
あなたの回答
tips
プレビュー