2016-03-04 2 views
0

Я пытаюсь добавить контент на страницу «Показать», включая заголовок, содержание и публикацию деталей. Когда я запускаю это с моего локального хоста, я получаю следующую ошибку;NoMethodError in Admin :: Должности # 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> 

Почтовый контроллер;

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 
Смежные вопросы