2011-07-06 1 views
0

Ma configuration: Rails 3.0.9, Ruby 1.9.2Déterminer le contrôleur d'origine

J'utilise Cancan pour autoriser une action du contrôleur. Si l'utilisateur de spécifier un identifiant manquant, alors je le code suivant

application_controller.rb 

rescue_from ActiveRecord::RecordNotFound do |exception| 
    flash[:alert] = "Oops, I cannot find this record, please try again." 
     respond_to do |format| 
      format.html { redirect_to root_url } 
     end 
    end 

Ce que je voudrais est le code ci-dessus pour définir le message flash à quelque chose comme

flash[:alert] = "Oops, I cannot find this person, please try again." 

« personne » dans ce cas pourrait être l'un des modèles, par exemple, si l'utilisateur a tenté d'accéder à un identifiant manquant pour un pays, il faut dire

flash[:alert] = "Oops, I cannot find this country, please try again". 

Vous avez l'idée. Je pense que je devrais être en mesure de saisir l'appel d'origine et le contrôleur, est-ce que quelqu'un sait comment faire cela ou a une meilleure façon de le faire?

Répondre

3

une chose que vous pouvez faire est d'analyser exception.message qui contient usally une chaîne qui ressemble à ceci

"Impossible de trouver l'image avec ID = 03 [WHERE images.state = 'publié']"

mais j'utiliser le params objet pour accéder au contrôleur et l'action provoquant l'erreur

comme ceci:

flash[:alert] = "Oops, I cannot find this #{params[:controller].upcase.singularize}, please try again." 

acclamations

+0

Fantastique, fonctionne comme un charme, merci. – Bob

Questions connexes