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

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

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

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

Q&A

解決済

2回答

4200閲覧

Ruby undefined method `comments' for nil:NilClass について

gaijin

総合スコア30

Ruby on Rails

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

0グッド

1クリップ

投稿2019/03/24 02:12

編集2019/03/24 05:41

Ruby初心者です。
独学で学んでおります。
Rubyにてコメントの削除覧を作成しています。

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

NoMethodError in CommentsController#destroy
undefined method `comments' for nil:NilClass

Parameters:

{"_method"=>"delete",
"authenticity_token"=>"rR7+250lRlmV7hN7/BluLRjYpZu6VV/GSa9NIg1FO4WOdEOXmd9FtvMumpLfaTZAZJoCk11SDk8oolc7lSna7g==",
"article_id"=>"1",
"id"=>"6"}
自分の理解がまだ薄くどのように解決したら良いか調べても答えが出ません。。

どなたか詳しい方どうぞご教授いただきたく思います。

``

class CommentsController < ApplicationController def create # raise params.inspect @article = Article.find params[:article_id] @article.comments.create(comment_params) redirect_to article_path(@article) end def destroy #raise params.inspect @article = Article.find params[:article_id] @comment = @aritcle.comments.find params[:id] @comment.destroy redirect_to article_path(@article) end def comment_params params.require(:comment).permit(:commenter, :body) end end

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

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

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

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

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

guest

回答2

0

ベストアンサー

@comment = @aritcle.comments.find params[:id]

typoがあります。
正しくは@articleです。

投稿2019/03/24 02:40

asm

総合スコア15147

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

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

gaijin

2019/03/24 05:48

こちらお恥ずかしながらtypoによるミスでした。 迅速で的確な返答本当にありがとうございました。
guest

0

undefined method `comments' for nil:NilClass

commentsメソッドのレシーバである@articleがnilクラスのオブジェクトのようです。

@articleにどのようなインスタンスが入っているか確認してみてください。

ただ、こちらのコードでは以下行があるのでこのエラーが出るのは考えにくいです。

@article = Article.find params[:article_id]

ファイルが保存されているか確認してみてください。

アドバイス

パラメータが正しく渡ってきているかエラー画面のparameters 部分も確認してみると良さそうです。

CommentsController#destroyでのエラーとなっているので最低限としてcommentsコントローラであることを確認できていること、destroyアクションの先頭からソースを共有していただくと良いと思います。

class CommentsController #commentsコントローラであることを確認 def destroy #最低限ここから共有してください。 #処理 end

こちらはフレームワーク Ruby on Railsではありませんか?
正しいタグ付けを行なうことで回答が受けやすくなると思います。

投稿2019/03/24 02:46

編集2019/03/24 02:48
ykp_yk

総合スコア654

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

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

gaijin

2019/03/24 05:48

こちらお恥ずかしながらtypoによるミスでした。 迅速で的確な返答本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問