Forum: Ruby on Rails I am getting a ' undefined method error ' when saving a comment

563dfbbd7385103f723ed478b98ba828?d=identicon&s=25 ank k. (ank_k)
on 2013-08-22 21:56
hi!! I am a newbie in ROR.

I have two models

has_many :Comment

belongs_to :Post

the error displays when I try to save a comment related to certain post.
I get the following error
undefined method `comment' for nil:NilClass
my comment controllers

  def new
 @comment =
render :layout => false

  def create
    @post = Post.find_by_id(params[:id])
    @post_comment = @post.comment.create(params[:comment])
      redirect_to post_index_path
      flash[:success] = "comment created!!"

Could someone please explain why am I getting this error..

Thanks in advance :)
7c43819aa888fd590262af439e6eae48?d=identicon&s=25 Germano Teixeira (Guest)
on 2013-08-22 22:07
(Received via mailing list)
You shold use

*has_many :comments*

instead of

*has_many :comment*

Then you can call


Look this example:

Take a look at accepts_nested_attributes to create your posts:

2013/8/22 ank k. <>
5f94b9b346c2aa648a80bc259978e5bc?d=identicon&s=25 Colin Law (Guest)
on 2013-08-22 22:09
(Received via mailing list)
On 22 August 2013 20:56, ank k. <> wrote:
> hi!! I am a newbie in ROR.
> I have two models
> Post
> has_many :Comment

that should be
has_many :comments
note that it is plural and lower case
> Comment
> belongs_to :Post

belongs_to :post

>  @comment =
> render :layout => false
>   end
>   def create
>     @post = Post.find_by_id(params[:id])
>     @post_comment = @post.comment.create(params[:comment])

You have not told us which line the error points to but I guess it is
the one above.  If so then it is saying that @post is nil, so your
find_by_id did not find anything.  You don't need to use find_by_id,
you can just use
@post = Post.find( params[:id] )
Perhaps there is not a Post object with the correct id.  If you look
in log/development.log you will see the params you are passing which
may give you a clue.

I suggest, however, that as a beginner you work right through a good
tutorial such as (which is free to use online).
That will show you the basics of rails.

Also see the Rails Guides.

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.