質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

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

Q&A

1回答

1588閲覧

[Rails]ブログサービスの投稿詳細画面に飛ぶときのエラー

Tsukaji

総合スコア18

Ruby

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

0グッド

1クリップ

投稿2019/05/07 07:11

前提・実現したいこと

ドットインストールRails入門#12を学習中です。
ブログサービスの投稿一覧から、各投稿にリンクを張り投稿詳細ページに飛べるようにしたいです。

発生している問題・エラーメッセージ

NoMethodError in Posts#show undefined method `title' for nil:NilClass

該当のソースコード

show.html.erb <h2> <%= @post.title %> </h2> <p> <%= @post.body %> </p> index.html.erb <h2>My Posts</h2> <ul> <% @posts.each do |post| %> <li> <%= link_to post.title, post_path(post.id) %> </li> <% end %> </ul> posts_controller.rb class PostsController < ApplicationController def index @posts = Post.all.order(created_at: "desc") end def show @post = Post.find(params[:id]) end end

試したこと

投稿一覧画面は正しく表示されているのですが、そこから投稿詳細ページに飛ぼうとすると上記のエラー画面になります。ドットインストールの指示通りに作業を進めてきました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

@postがnilになっているエラーです。

投稿2019/05/08 04:34

odyu

総合スコア548

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tsukaji

2019/05/08 05:40

コントローラーで定義してるのにnilになるのですか?
odyu

2019/05/08 06:39

コントローラーのコードを拝見しないと判断できないのですが、転機してもらうことは可能ですか?
Tsukaji

2019/05/08 15:54

posts_controller.rb class PostsController < ApplicationController def index @posts = Post.all.order(created_at: "desc") end def show @post = Post.find(params[:id]) end end こちらになります、お願いします。
odyu

2019/05/08 16:02

def show @post = Post.find(params[:id]) p @post end show.html.erb <% p @post %> <h2> <%= @post.title %> </h2> <p> <%= @post.body %> </p> と、やってログに@postの内容がプリントされると思いますが、どういった結果が出るでしょうか? undefined method `title' for nil:NilClass は<h2> <%= @post.title %> </h2>で発生しているように思ってましたが、違う場所で発生してるような気もするので。 ログを転記してもらえたら判断できるかと思います。
Tsukaji

2019/05/09 04:46

ご丁寧にありがとうございます。 ログはどうやって確認するのでしょうか。 お手数をおかけしてすみません。
odyu

2019/05/09 04:50

開発環境がどういった環境かわかりませんが、 railsアプリのディレクトリにlogディレクトリがあると思います。その中にdevelopment.logが存在すると思います。 そのファイル中に出力されています。 tail -f log/development.log とコマンドうって、エラーが起こっている操作をすれば流れると思います。
Tsukaji

2019/05/09 05:09

下記のように出力されました。 Post Create (1.9ms) INSERT INTO "posts" ("title", "body", "created_at", "updated_at") VA LUES (?, ?, ?, ?) [["title", "title3"], ["body", "body3"], ["created_at", "2019-05-06 21:2 4:40.043805"], ["updated_at", "2019-05-06 21:24:40.043805"]] ↳ db/seeds.rb:10 (6.3ms) commit transaction ↳ db/seeds.rb:10 (0.1ms) begin transaction ↳ db/seeds.rb:10 Post Create (2.5ms) INSERT INTO "posts" ("title", "body", "created_at", "updated_at") VA LUES (?, ?, ?, ?) [["title", "title4"], ["body", "body4"], ["created_at", "2019-05-06 21:2 4:40.057016"], ["updated_at", "2019-05-06 21:24:40.057016"]] ↳ db/seeds.rb:10 (6.0ms) commit transaction ↳ db/seeds.rb:10
odyu

2019/05/09 05:13

操作すると Started GET "/" みたいなログは出力されませんか?
Tsukaji

2019/05/09 05:13

出力されたことがないです、、
Tsukaji

2019/05/09 05:15

ちなみに環境はvagrant、virtualboxを使って仮想マシン上で開発しています。
odyu

2019/05/09 05:21

log/development.logに Started GET "/" みたいなのが出力されるはずですが。 上記のログが全てになりますか?
Tsukaji

2019/05/09 05:29

そうなります
odyu

2019/05/09 05:41

vagrant、virtualbox使ったことないので、ちょっと構成がわかりまえんが、ログが見れない状況で開発することは厳しいと思います。 そのへんの環境を整えないと、エラーの解消方法を伝えるのも困難だと思います。 力になれず申し訳ないです。
Tsukaji

2019/05/09 05:47

なるほど、わかりました。 何度もお答えしていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問