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 -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/eefca17e-5fad-4f56-bc5e-531551c5cfdc%40googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Tamara Temple
2013-Oct-20 18:12 UTC
Re: Rails 4 - I got NoMethodError undefined method. Please help
On Oct 18, 2013, at 10:17 PM, Jim <koyca2002-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 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.> <%= 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 > > > -- > You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. > To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/eefca17e-5fad-4f56-bc5e-531551c5cfdc%40googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out.-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/1C6AC6A7-9540-4847-A9DC-10A9EFE2AAA2%40gmail.com. For more options, visit https://groups.google.com/groups/opt_out.