2009-05-14 5 views

Répondre

8

Il s'agit probablement d'une chaîne entre guillemets, telle que "Ponies all love #{h params[:chat_input]}!". L'expression #{stuff} provoque l'interprétation et l'insertion de l'expression de contenu dans la chaîne. Par exemple "1 + 2 = #{1 + 2}" résultera dans la chaîne "1 + 2 = 3". Le h est un alias à la méthode html_escape, ce qui est assez explicite

+4

aussi, # {} est rubis, pas de rails spécifiques –

1

Il s'agit simplement d'interpoler une valeur dans une chaîne. Le: chat_input est un symbole, il est utilisé à la place d'une chaîne car les symboles ne sont créés qu'une seule fois.

4

Le code que vous collez, en soi, n'est qu'un commentaire. Je suppose que le code est dans une chaîne, cependant.

"hello, #{5 + 5}" 
# => hello, 10 

L'instruction entre parenthèses sera évaluée comme Ruby. C'est ce qu'on appelle l'interpolation de chaîne.

La déclaration à l'intérieur de l'interpolation dans votre code est une méthode qui obtient un argument.

h params[:chat_input] 
h(params[:chat_input]) 

Le procédé h est un raccourci pour html_escape, qui échappe HTML. Par exemple, <span> est converti en &lt;span&gt;, de sorte que le navigateur affiche le contenu réel de la chaîne au lieu de l'interpréter au format HTML.

html_escape(params[:chat_input]) 

Vous savez probablement ce que params est. Pour résumer, vous obtenez une version HTML échappée de tous les paramètres [: chat_input].

1
h(something) 

ou

h something 

depuis Ruby ne force pas l'utilisation de(), est une fonction disponible dans des rails qui convertit le paramètre en chaîne « sécurité HTML » évite d'interpréter le code HTML possible à l'intérieur de la variable 'quelque chose'.

"#{x}" 

dans les moyens rubis convertissant la variable x en une chaîne et le placer dans la nouvelle chaîne, par exemple:

"#{host}:#{port}" 

placera la valeur de l'hôte et de la valeur de l'orifice dans la nouvelle chaîne formée par le "", de telle sorte que si host est "localhost" et que port soit 30, la chaîne résultante sera "localhost: 30"

params est un hash de rails spécial qui contient les paramètres post/get transmis au contrôleur méthode en cours d'exécution

un autre détail est que Ruby une méthode renvoie toujours la dernière expression évaluée

donc la méthode

def test 
    "#{h params[:chat_input]}" 
end 

retourne une chaîne qui a la valeur sûre HTML du paramètre post/get chat_input

4

"# {h params [: chat_input]}"

En rubis, les chaînes entre guillemets doubles permettent expressions à évaluer et automatiquement converties en chaînes.

Je peux le faire:

years = 25 
"John is " + years + " years old" 

mais je vais faire une erreur parce que je ne peux pas ajouter le numéro à une chaîne.

je peux faire

"John is #{years} years old" 

pour contourner cette difficulté.

La méthode h() est une fonction d'assistance Rails qui supprime les balises HTML. C'est une question de sécurité.

Enfin, params() est une méthode dans Rails qui vous donne accès aux paramètres GET et POST. En fait, il enveloppe un hachage. Les paramètres GET et POST sont symbolisés pour réduire la mémoire (les symboles ne sont définis qu'une fois, alors qu'une chaîne comme "foo" est un nouvel objet à chaque fois.)

Alors, params [: chat_input] récupère la valeur à partir des paramètres GET ou POST de la requête précédente, et dans votre cas, il semble que l'affichage et la désinfection soient effectués.

Espérons que ça aide!

0

sainte merde, est-ce à partir de chat_sandbox par hasard?

si oui, laissez-moi savoir si vous avez besoin d'aide $)

J'espère mettre à jour le code ici bientôt.