Saya memiliki string tidak tepercaya yang ingin saya tampilkan sebagai teks di halaman HTML. Saya harus melepaskan karakter ' <
' dan ' &
' sebagai entitas HTML. Semakin sedikit keributan semakin baik.
Saya menggunakan UTF8 dan tidak memerlukan entitas lain untuk huruf beraksen.
Apakah ada fungsi bawaan di Ruby atau Rails, atau haruskah saya menggulungnya sendiri?
&<>"'/
Jawaban:
The
h
helper Metode:sumber
h
adalah alias untukhtml_escape
Lihat kelas Ruby CGI . Ada metode untuk menyandikan dan mendekode HTML serta URL.
sumber
Di Ruby on Rails 3 HTML akan di-escape secara default.
Untuk string non-escape, gunakan:
sumber
ERB :: Util.html_escape dapat digunakan dimana saja. Ini tersedia tanpa menggunakan
require
di Rails.sumber
CGI.escapeHTML
bawahSelain jawaban Christopher Bradford untuk menggunakan pelolosan HTML di mana pun, karena kebanyakan orang tidak menggunakannya
CGI
saat ini, Anda juga dapat menggunakanRack
:sumber
Anda dapat menggunakan salah satu
h()
atauhtml_escape()
, tetapi kebanyakan orang menggunakanh()
berdasarkan konvensi.h()
adalah kependekan darihtml_escape()
in rails.Di pengontrol Anda:
Dalam pandangan Anda:
Jika Anda melihat sumber HTML: Anda akan melihat output tanpa benar-benar menebalkan datanya. Yaitu itu dikodekan sebagai
<b>Hello World!</b>
.Ini akan muncul dan ditampilkan sebagai
<b>Hello World!</b>
sumber
Perbandingan berbagai metode:
Saya menulis milik saya sendiri agar kompatibel dengan pelarian Rails ActiveMailer:
sumber
h()
juga berguna untuk menghilangkan tanda kutip.Misalnya, saya memiliki tampilan yang menghasilkan tautan menggunakan bidang teks
result[r].thtitle
. Teks dapat menyertakan tanda kutip tunggal. Jika saya tidak melarikan diriresult[r].thtitle
dalam metode konfirmasi, Javascript akan rusak:Catatan:
:html
deklarasi judul secara ajaib di-escape oleh Rails.sumber