rubyonrailsin

A Ruby and Rails talk

Monday, March 15, 2010


[Rails] Re: Problem with Getting Started with Rails

by rubyonrailsin 0 comments

Tag


Share this post:
Design Float
StumbleUpon
Reddit

Neil Bye wrote:
> I am working through the official Getting Started with Rails tutorial
> http://guides.rubyonrails.org/getting_started.html#generating%20-a-controller
>
> I am stuck on section 8.4 Generating a Controller. It suggests there
> that this definition:
> def index
> @post = Post.find(params[:post_id])
> @comments = @post.comments
> end
>
> S ould be used in com ents_controller.rb. Surely that would make
> http://localhost:3000/comments work, but it gives the error
> Couldn't find Post without an ID. That suggests a problem with the first
> line of the definition. However that is what it says I should use in the
> tutorial so I looked at post.rb and comment.rb and they are as directed.
> Also checked routes.rb but all seems to be correct. Incidentally the
> page http://localhost:3000/posts/1
> works fine and displays comments which I have to enter with the terminal
> as http://localhost:3000/comments/new gives the same error.

Take a closer look at this URL:
http://localhost:3000/comments

How would the comments_controller know which post to look up. The
resource identifier is not anywhere in the URL and it's not tacked on as
a query parameter.

The most likely design in this case would be to nest comments under
posts. The URL would look something like:

http://localhost:3000/posts/1/comments/new

And the new action would look something like:

def new
@post = Post.find(params[:post_id])
@comment = @post.comments.build
end

If course you're going to want to DRY up this code by moving:

@post = Post.find(params[:post_id])

Into a private method and adding a before_filter to load the post.
--
Posted via http://www.ruby-forum.com/.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment

Subscribe feeds via e-mail

Blog Archive