2016-03-04 68 views
0

我正在嘗試向顯示頁面添加內容,包括標題,內容和發佈詳情。當我從本地主機運行這個時,我收到以下錯誤;管理中的NoMethodError :: Posts#show

Showing /Users/laurenwoodhams/Desktop/PROJECT/RAILS-BLOG/-t/app/views/admin/posts/show.html.erb where line #2 raised: 

undefined method `title' for nil:NilClass 
<h1>Admin::Posts#show</h1> 
<p><b>title:</b> <%= @post.title %></p> 
<p><b>content:</b> <%= @post.content %></p> 
<p><b>publish:</b> <%= @post.publish %></p> 
<p><b>created:</b> <%= @post.created_at %></p> 

這是我在崇高的表演形式;

<h1>Admin::Posts#show</h1> 
<p><b>title:</b> <%= @post.title %></p> 
<p><b>content:</b> <%= @post.content %></p> 
<p><b>publish:</b> <%= @post.publish %></p> 
<p><b>created:</b> <%= @post.created_at %></p> 

Post Controller;

class Admin::PostsController < Admin::ApplicationController 
    def index 
    if params[:search].present? 
     @posts = Post.matching_title_or_content(params[:search]).page params[:page] 
    else 
     @posts = Post.all.order(id: :desc).page params[:page] 
    end 
    end 

    def new 
    end 

    def create 
    end 

    def edit 
    end 

    def update 
    end 

    def show 
    @posts = Post.find(params[:id]) 
    end 

    def destroy 
    end 
end 

你能解釋爲什麼會發生這個錯誤嗎?

+0

這一切的意思是,'@ POST'是'nil'。你是否在控制器中初始化它? – ndn

+0

請顯示您的PostsController,以便我們可以幫助您。 – SacWebDeveloper

+0

@SacWebDeveloper。道歉,我已經在我的帖子中對此進行了修改,以便您現在查看。 –

回答

0

您的看法使用@post變量,但在您的顯示操作中您定義了@posts。可能是一個錯字。嘗試:

def show 
    @post = Post.find(params[:id]) 
end 
0

對於指數方法

def index 
    if params[:search].present? 
     @posts = Post.matching_title_or_content(params[:search]).page params[:page] 
    else 
     @posts = Post.all.order(id: :desc).page params[:page] 
    end 
    end 

顯示方法

def show 
    @post = Post.find(params[:id]) 
    end 
相關問題