Forum: Ruby on Rails Rails 4 - I got NoMethodError undefined method. Please help

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Bf68bfe54236d0e71c158b1d7b799cd1?d=identicon&s=25 Jim (Guest)
on 2013-10-20 19:41
(Received via mailing list)
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')
%></small><br/><br/>
    <%= @post.admin_user.name %>
    <p>Category: <%= link_to @post.category.name,
category_path(@post.category.id) %></p>
    <%= 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 %>
    </div>



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
Aa082c8b00a50928e5860dcd70bf2368?d=identicon&s=25 tamouse m. (tamouse_m)
on 2013-10-20 20:14
(Received via mailing list)
On Oct 18, 2013, at 10:17 PM, Jim <koyca2002@gmail.com> wrote:

> 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')
%></small><br/><br/>
>     <%= @post.admin_user.name %>

If this is line #5 (where the error was reported below), then admin_user
is nil.

>     <p>Category: <%= link_to @post.category.name,
category_path(@post.category.id) %></p>

If this is line #5, then category is nil.

If this were me, I'd poke in the rails console and see what the record
settings are, why either of those might be nil, and where they were
supposed to be set for the post record.
This topic is locked and can not be replied to.