I got a NoMethodError when i called <%= @post.admin_user.name %>, don’t
know how to fix it.
Extracted source (around line #4):
<h1><%= @post.title %></h1>
<p><%= @post.body %></p>
<small>Post created at <%= @post.created_at.strftime('%b %d. %Y')
%>
<%= @post.admin_user.name %>
Category: <%= link_to @post.category.name,
category_path(@post.category.id) %>
<%= link_to ‘Edit Post’, edit_post_path %> | <%= link_to ‘Go Back’,
posts_path %> | <%= link_to ‘Delete Post’, @post, :confirm => “Don’t
do
it man!”, :method => :delete %>
Showing c:/Sites/blog/app/views/posts/show.html.erb where line #5
raised:
undefined method `name’ for nil:NilClass
This is my posts_controller.rb
class PostsController < ApplicationController
def index
@post = Post.all
end
def new
@post = Post.new
@category = Category.all
end
def create
@post = Post.new(post_params)
if @post.save
redirect_to posts_path, :notice => 'Your post has been posted!'
else
render 'new'
end
end
def post_params
params.require(:post).permit(:title, :body, :category_id,
:admin_user_id, :admin_user, :name)
end
def edit
@post = Post.find(params[:id])
end
def update
@post = Post.find(params[:id])
if @post.update_attributes(post_params)
redirect_to post_path, :notice => 'Your post has been updated.'
else
render 'new'
end
end
def show
@post = Post.find(params[:id])
@user = AdminUser.all
end
def destroy
@post = Post.find(params[:id])
@post.destroy
redirect_to posts_path, :notice => 'Your post has been
deleted.’
end
end
This is my post.rb
class Post < ActiveRecord::Base
belongs_to :category
belongs_to :admin_user
end
My admin_user.rd
class AdminUser < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable,
:recoverable, :rememberable, :trackable, :validatable
has_many :posts
end