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

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.
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.