2010-11-30 6 views
6

Je suis un débutant dans Rails. J'ai créé un contrôleur et une action. Dans la vue correspondante j'ai utilisé <% = met "asd"%> une fois et <% = p "asd"%> l'autre fois.Différence entre p dans une vue de rails et met

Dans le cas où id l'affiche sur la console et dans le cas de p il est rendu en HTML. Quelle est la raison possible?

+0

Astuce pour le débutant: "Rails" n'est pas orthographié dans TOUTES LES CAPITALES. –

Répondre

11

puts appelle la méthode to_s p appelle la méthode inspect

class Foo 
    def to_s 
    "In #to_s" 
    end 
    def inspect 
    "In #inspect" 
    def 
def 

sémantiquement, to_s est destiné à la production de la représentation de l'objet à l'utilisateur, et inspecter à indice sur les propriétés internes de l'objet (un peu comme repr de python), mais c'est juste une convention.

Si vous voulez inspecter quelque chose dans votre code HTML utilisation <%= debug "something" %>

3

Je pense que vous trouverez que les sorties et p méthode à la console, mais la raison pour laquelle il est « rendu HTML » est parce que la méthode p retourne la valeur passée, où puts ne fonctionne pas.

p est la version plus courte de puts something.inspect et est très utile pour le débogage et c'est à peu près tout. Pour transmettre des chaînes à la console, il est préférable d'utiliser puts.

Questions connexes