2009-05-23 5 views
8

J'essaie de configurer mon charset dans une vue html dans une application RoR. J'ai configuré déjà le jeu de caractères par balise meta equiv:
** meta http-equiv = contenu "Content-Type" = "text/html; charset = iso-8859-1" **Définir le jeu de caractères dans les rails Application

Il n'a pas travail, donc j'ai essayé de changer mon. Htaccess (c'est une application RoR fonctionnant sous Apache) mais voici mon problème. Normalement, je pourrais utiliser l'instruction suivante: AddType 'text/html; charset = ISO-8859-1 'html

Mais le problème est que, comme tout le monde le sait, RoR n'a pas "d'extension de fichier" et qui casse cette solution .htaccess. Quelqu'un connaît une autre façon de définir un jeu de caractères dans un modèle ou une vue?

Répondre

13

Demandez à votre application Rails de définir l'en-tête Content-type, et vous n'aurez plus à vous soucier de ce que fait Apache.

response.headers['Content-type'] = 'text/html; charset=utf-8' 

Vous pouvez également ajouter

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

à la page elle-même, de sorte que si quelqu'un enregistre sur le disque, il se chargera avec le charset correct.

+0

i peut le mettre au contrôleur d'application pour le rendre availabe à tous les contrôleurs? Parce que j'ai des problèmes avec les caractères sur les vues/layout/application.rhtml –

+0

Merci, j'avais besoin de ça. @VP, vous pouvez le mettre dans un before_filter et je pense que vous pouvez en mettre un dans le fichier application_controller.rb –

2

J'ai ajouté une fonction comme celle-ci, mais qui ne fonctionne toujours pas, j'ai des codes ~ ~ dans mon application.rhtml qui ne fonctionnent pas.

before_filter :configure_charsets 

# Configuring charset to UTF-8 
def configure_charsets 
    headers["Content-Type"] = "text/html; charset=UTF-8"  
end 

I ajouté ainsi méta balise html http-equiv et un paramètre .htaccess AddDefaultCharset UTF-8

Ce ne fonctionne toujours pas, tout autre conseil?

0

Il suffit de définir: encoding => 'utf-8' après le nom du modèle comme celui-ci:

respond_to do |f| 
    f.pdf do 
    render :pdf => 'path_to_template_file', :encoding => 'utf-8' 
    end 
end 
Questions connexes