[ruby-it] gestione eccezioni -> best practice

Marco Mastrodonato m.mastrodonato a gmail.com
Mar 4 Ago 2009 11:01:26 CEST


Mattia Lipreri wrote:
> 
> cos'altro dovrei tenere presente? Ci sono controindicazioni nel farlo?
> 
> Grazie per i chiarimenti

Ciao,
secondo me "best practice" č molto soggettivo, ti posso dire come piace 
a me gestire le "bad request" tramite routing:

come ultima riga, dopo le ultime due routes generiche inserisci:

#config\routes.rb
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
map.catch_all "*anything" , :controller => "home" , :action => 
"unknown_request"

nell'esempio si indirizza la bad request nel controller home dove per 
esempio si puņ mostrare un messaggio e reindirizzare alla root:

#app\controllers\home_controller.rb
def unknown_request
  respond_to do |format|
    format.html do
      flash[:error] = I18n.t :unknown_request
      redirect_to root_path
    end
    format.xml  {  render :xml => {:root => I18n.t(:unknown_request) }, 
:status => :unprocessable_entity }
    format.js
  end
end

oppure se rindirizzare alla root non ti piace puoi scegliere di 
indirizzarlo al suo precedente url o se non esiste alla 404:

page = Page.find_by_old_page(request.request_uri)
if page
  redirect_to page.new_page
else
  render :file => "#{RAILS_ROOT}/public/404.html", :layout => false, 
:status => 404
end

Ciao

-- 
Posted via http://www.ruby-forum.com/.


More information about the Ml mailing list