表題のエラーが発生しております。
Rubyはほとんど触ったことがなく、簡単な質問で恐縮ですが
@postを定義しているのでメソッドがない、未定義ではないと認識しているのですが、
@postがnilのためこのエラーが発生しているのでしょうか?
だとすればなぜnilなのでしょうか。
ご助言頂ければ幸いです。
エラー
NoMethodError in Posts#edit Showing /home/progate/tweet_app/app/views/posts/edit.html.erb where line #6 raised: undefined method `content' for nil:NilClass Extracted source (around line #6): <div class="form"> <div class="form-body"> <textarea><%= @post.content %></textarea> <input type="submit" value="保存"> </div> </div> Rails.root: /home/progate/tweet_app Application Trace | Framework Trace | Full Trace app/views/posts/edit.html.erb:6:in `_app_views_posts_edit_html_erb__4353119297950482048_47327653967320' Request Parameters: {"instanceId"=>"2d16f8d22d4a", "containerPort"=>"3000", "languageName"=>"rails5", "locale"=>"ja", "id"=>"4"} Toggle session dump Toggle env dump Response Headers: None
edit.html.erb
<div class="main posts-new"> <div class="container"> <h1 class="form-heading">編集する</h1> <div class="form"> <div class="form-body"> <textarea><%= @post.content %></textarea> <input type="submit" value="保存"> </div> </div> </div> </div>
posts.controller.rb
class PostsController < ApplicationController def index @posts = Post.all.order(created_at: :desc) end def show @post = Post.find_by(id: params[:id]) end def new @post = Post.new end def create @post = Post.new(content: params[:content]) if @post.save flash[:notice] = "投稿を作成しました" redirect_to("/posts/index") else render("posts/new") end def edit @post = Post.find_by(id: params[:id]) end end end
routes.rb
Rails.application.routes.draw do get "posts/index" => "posts#index" get "posts/new" => "posts#new" get "posts/:id" => "posts#show" post "posts/create" => "posts#create" get "posts/:id/edit" => "posts#edit" get "/" => "home#top" get "about" => "home#about" end
show.html.erb
<div class="main posts-show"> <div class="container"> <div class="posts-show-item"> <p> <%= @post.content %> </p> <div class="post-time"> <%= @post.created_at %> <div class="post-menus"> <%= link_to("編集", "/posts/#{@post.id}/edit") %> </div> </div> </div> </div> </div>
postsデータベースにはid,content,created_at,update_atというカラムがあります。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/25 13:37