I've successfully created part of a RESTful application that uses nested resources. In my app, comments are nested in discussions and discussions are nested in topics. I altered routes.rb to reflect this:

Code Ruby:
map.resources :topics do |topics|
      topics.resources :discussions do |discussions|
        discussions.resources :comments
     end
  end

This works well for discussions. I can view a list at index.rhtml, create a new discussion, destroy, show, etc.

It works less well for comments. Most actions -- such as index, show, and destroy -- work fine. But the create action doesn't. That is, it successfully saves the comment and correctly saves it to the right discussion, but it fails to redirect a user to the show page for the saved comment.

Following is the analogous (and working) CREATE action from my DiscussionController. Upon save, it redirects user to a url like "http://localhost:3000/topics/2/discussions/6/":

Code Ruby:
def create
    @discussion = Discussion.new(params[:discussion])
    @discussion.topic = Topic.find(params[:topic_id])
 
    respond_to do |format|
      if @discussion.save
        flash[:notice] = 'Discussion was successfully created.'
        format.html { redirect_to discussion_url(@discussion.topic, @discussion) }
        format.xml  { head :created, :location => discussion_url(@discussion.topic, @discussion) }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @discussion.errors.to_xml }
      end
    end
  end

Here is the CREATE action from my CommentsController:
Code Ruby:
def create
    @comment = Comment.new(params[:comment])
    @comment.discussion = Discussion.find(params[:discussion_id])
 
    respond_to do |format|
     if @comment.save
        flash[:notice] = 'Comment was successfully created.'
        format.html { redirect_to (@comment.discussion, @comment) }
        format.xml  { head :created, :location => comment_url(@comment.discussion, @comment) }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @comment.errors.to_xml }
      end
    end
  end

If I replace the format.html line to say "redirect_to comments_url" it works fine -- in that it saves and redirects to the list of comments for the given discussion. Why can't I redirect to show just the saved comment?