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