Le problème n'est pas tant l'édition de la valeur que son rendu ultérieur. Pour ajouter des caractères d'espacement à votre valeur tout en l'éditant dans une zone de texte, il suffit d'appuyer sur la touche retour. Lorsque vous rééditez cette valeur plus tard, les espaces devraient toujours être présents.
Le rendu des espaces blancs est la partie la plus délicate. En HTML, les espaces blancs sont généralement insignifiants. Un moteur de rendu tel que celui utilisé par votre navigateur affichera un espace unique pour toute chaîne continue d'espaces. Il ne suffit donc pas d'afficher la valeur sur la page :
<%= obj.description %>
Même si votre valeur est "One \t \n \n Two"
il apparaîtra à l'écran comme "One Two"
.
Pour que ces nouveaux caractères de ligne séparent réellement les lignes à l'affichage, vous devez les convertir en HTML avant de les rendre :
<%= obj.description.gsub(/\n/, '<br/>') %>
Bien sûr, si les utilisateurs saisissent des données qui seront incluses dans votre HTML, vous devez échapper les valeurs pour vous protéger contre XSS . Si les nouvelles lignes sont la seule chose que vous devez soutenir, cela devrait être aussi simple que cela :
<%= h(obj.description).gsub(/\n/, '<br/>') %>
Si vous souhaitez autoriser un formatage plus complexe, consultez le site suivant Markdown et Textile (pour lesquels Rails fournit des méthodes d'aide à la visualisation). Assurez-vous simplement d'examiner le support éventuel qu'ils fournissent pour la prévention des XSS.
0 votes
Où le rendu n'est-il pas correct ? Dans la zone de texte proprement dite, lorsque vous revenez en arrière pour modifier la valeur (par ex.
<%= f.text_area :description %>
) ? Ou sur la page lorsque vous rendez la valeur en clair (c'est-à-dire<%= obj.description %>
) ?0 votes
Sur la page où j'essaie de rendre les données, il place juste le < br > comme texte.