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
Why fight the framework?
redirect_to @tip
And you can shorten your code by using the :notice option.
redirect_to @tip, :notice => 'Message here'
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With