NoMethodError in Posts#showの解決
まだRuby on Railsを学び始めたばかりの者です。
Ruby on Railsでinstagramのクローンを作る過程で、投稿一覧ページを作成してから新規投稿のページを作ろうとしています。
routes.rbで
get 'posts/:id' => "posts#show"
get 'posts/new' => "posts#new"
と入力し、postsコントローラーで @post = Post.find_by(id: params[:id])と代入してshow.html.erbで<%= @post.content %>と入力し表示するようにしています。
プレビューで"/posts/1"と入力しshow.html.erbの<%= @post.content %>が問題なく表示されるのですが、new.html.erbを'posts/new'で表示すると
NoMethodError in Posts#show
undefined method `content' for nil:NilClass
と表示されます。
'posts/new'を開いているのにshowのことが出てくる原因がわからず、どこに手をつけたらいいのかわかりません。
エラーページには
Request
Parameters:
{"id"=>"new"}
と表示されています
(これはもしかして'posts/new'のnewが:idとして入力されているから、そんなidのcontentないぞってことになっているのでしょうか?)
とても初歩的な質問なのかもしれないのですが、返答をいただけると助かります。
よろしくお願いいたします。
発生している問題・エラーメッセージ
NoMethodError in Posts#show Showing /home/ec2-user/environment/sample_app/app/views/posts/show.html.erb where line #2 raised: undefined method `content' for nil:NilClass
該当のソースコード
Ruby
1Extracted source (around line #2): 2 3<%= @post.content %> 4<%= @post.created_at %> 5<%= link_to("編集", "/post/#{@post.id}/edit") %> 6<%= link_to("削除", "/post/#{@post.id}/destroy", {method: "post"}) %>
試したこと
補足情報(FW/ツールのバージョンなど)
Rails 5.2.2
cloud
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。