Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails: redirect_to :controller=>'tips', :action => 'show', :id => @tip.permalink

I tried to redirect rails to show action by passing controller, action, and params. However, rails ignores the name of action totally!

what I got is http://mysite/controllername/paramId

so i have error message....

here is the action code I used:

def update
    @tip = current_user.tips.find(params[:id])
    @tip.attributes = params[:tip]
    @tip.category_ids = params[:categories]
    @tip.tag_with(params[:tags]) if params[:tags]


    if @tip.save
      flash[:notice] = 'Tip was successfully updated.'
      redirect_to :controller=>'tips', :action => 'show', :id => @tip.permalink
    else
      render :action => 'edit'
    end
  end 
like image 370
john Avatar asked Jun 11 '10 21:06

john


2 Answers

Why fight the framework?

redirect_to @tip

And you can shorten your code by using the :notice option.

redirect_to @tip, :notice => 'Message here'
like image 176
Samuel Avatar answered Oct 12 '22 11:10

Samuel


If its a REST resource route, the routing is actually correct. A GET request on /tips/id actually calls the show action. Because of the way it is routing, my guess is that you routed it with map.resources, and this is correct.

like image 29
alternative Avatar answered Oct 12 '22 11:10

alternative