2009-05-14 5 views

答えて

8

"Ponies all love #{h params[:chat_input]}!"のように、二重引用符で囲んだ文字列の中にある可能性が最も高いです。#{stuff}式は、stuff式を解釈して文字列に挿入します。たとえば、"1 + 2 = #{1 + 2}"の場合、文字列は"1 + 2 = 3"になります。

hは、html_escapeメソッドのエイリアスですが、これはわかりやすいものです。

+4

また、#{}はルビーで、レール固有ではありません –

1

文字列内の値を補間するだけです。 :chat_inputはシンボルであり、シンボルは一度しか作成されないため、文字列の代わりに使用されます。

4

貼り付けるコードは単なるコメントです。私は、コードが文字列の中にあると仮定します。

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

括弧内のステートメントは、Rubyとして評価されます。これは文字列補間と呼ばれます。

コード内の補間内のステートメントは、引数を取得するメソッドです。

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

h方法はHTMLをエスケープhtml_escapeのショートカットです。たとえば、<span>&lt;span&gt;に変換されるため、ブラウザはHTMLとして解釈するのではなく、文字列の実際の内容を表示します。

html_escape(params[:chat_input]) 

おそらくparamsがわかります。

要約すると、params [:chat_input]に含まれるHTMLエスケープされたバージョンが表示されます。

1
h(something) 

または

h something 

ルビーは、()の使用を強制しないため、内部の可能なHTMLコードを解釈避け「安全なHTML」の文字列にパラメータを変換し、レールで利用できる機能です「何か」変数のルビーで

"#{x}" 

文字列にXの変数を変換し、例えば新しい文字列に置くことを意味する:

"#{host}:#{port}" 

が形成された新しい文字列にホストの値とポートの値を配置しますホストが "localhost"でポートが30の場合、結果の文字列は "localhost:30"になります。

paramsは、コントローラに渡されるpost/getパラメータを含む特別なレールハッシュですメソッド実行中

別の詳細は、Rubyでメソッドがいつもの方法

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

はポスト/取得パラメータchat_input

のHTMLセーフ値を持つ文字列を返します最後に評価表現

を返すということです

4

"#{時間のparams [:chat_input]}" Rubyで

式が評価され、自動的に文字列に変換するために、二重引用符で囲まれた文字列を可能にします。

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

を私は文字列に番号を追加することはできませんので、私はエラーを取得します:

私はこれを行うことができます。

私はそれを回避するために

"John is #{years} years old" 

を行うことができます。

h()メソッドは、HTMLタグを削除するRailsヘルパー関数です。それは安全なものです。

最後に、params()はGETとPOSTパラメータへのアクセスを提供するRailsのメソッドです。実際にはハッシュをラップしています。GETパラメータとPOSTパラメータは、メモリを減らすためにシンボル化されています(記号は一度しか定義されませんが、 "foo"などの文字列は毎回新しいオブジェクトです)。

params [:chat_input]以前のリクエストのGETまたはPOSTパラメータから取得します。あなたのケースでは、表示と消毒のように見えます。

希望に役立ちます!

0

神聖なことは、それはchat_sandboxから何かチャンスですか?

もしそうなら、私はすぐにここでそのコードを更新するために望んでいる

)何か助けに$が必要な場合は私に知らせてください。

関連する問題