Best way to do redirect_to using multiple controllers?

I'm using the same comment system for two different controllers, so users post a comment to a game and a post using the same "create" action in the comments controller.

I did comments for games first, so my comments create action looks like this:

  def create     @comment = Comment.new(params[:comment])     if @comment.save       flash[:notice] = "You have successfully added a comment."       redirect_to :controller => 'games', :action => 'show', :id => @comment.game.id     else       render :action => 'new'     end   end

What's the best way to tell this action where the comment was posted, so the redirect_to sends them back to the correct post or game?

Thanks!

One thing you could do is put the destination info in the session, then later redirect like this:

redirect_to :action => session[:back_action], :controller => session[:back_controller], :id => session[:back_id]

And of course earlier some other action had done something like this:

     session[:back_action] = "show"      session[:back_controller] = "games"      session[:back_id] = @comment.game.id

(untested)

Dave Amos wrote:

And of course earlier some other action had done something like this:

     session[:back_action] = "show"      session[:back_controller] = "games"      session[:back_id] = @comment.game.id

(untested)

-- -George

Thanks, that's a good idea. The problem I'm having is that if I put that code in my controller, let's say in the action where the user can create the comment, @comment doesn't exist yet. But it's a good start -- I'll see what I can figure out.

You could use a hidden field or (fields) in the forms.

<%= hidden_field_tag 'from_controller', 'posts' %> <%= hidden_field_tag 'from_id', post_id %>

then in your controller...

redirect_to :controller => params[:from_controller], :action => 'show', :id => params[:from_id]

You could use a hidden field or (fields) in the forms.

<%= hidden_field_tag 'from_controller', 'posts' %> <%= hidden_field_tag 'from_id', post_id %>

then in your controller...

redirect_to :controller => params[:from_controller], :action => 'show', :id => params[:from_id]

Yes, that did it. Thanks!