Bisakah seseorang tolong jelaskan penggunaan karakter berikut yang digunakan dalam file ERB:
<% %>
<%= %>
<% -%>
<%# %>
apa gunanya masing-masing?
ruby-on-rails
ruby
templates
erb
simo
sumber
sumber
-%>
, dan stackoverflow.com/questions/3952403/... for<%=
, stackoverflow.com/questions/3901619/… for<%#
.<%= %>
dan<%= -%>
berbeda: hanya yang kedua yang menghilangkan spasi spasi putih.Jawaban:
Menjalankan kode ruby di dalam kurung.
Mencetak sesuatu ke file erb.
Hindari jeda baris setelah ekspresi.
Mengomentari kode dalam kurung; tidak dikirim ke klien (sebagai lawan dari komentar HTML).
Kunjungi Ruby Doc untuk info lebih lanjut tentang ERB.
sumber
<%#
hanya normal<%
dengan komentar Ruby#
tepat setelah itu .... Ya, menyenangkan untuk berpikir itu sesuatu yang istimewa, tetapi bukankah itu hanya idiom ERB daripada konstruksi sintaksis khusus?<%...%>
,<%#...%>
komentar semua itu, yang tidak akan dilakukan jika itu hanya komentar normal (yaitu hanya akan berkomentar di luar garis aktif).<% %>
dan<%- and -%>
untuk kode Ruby apa pun, tetapi tidak menampilkan hasilnya (misalnya jika pernyataan). keduanya sama.<%= %>
adalah untuk mengeluarkan hasil dari kode Ruby<%# %>
adalah komentar ERBBerikut panduan yang bagus: http://api.rubyonrails.org/classes/ActionView/Base.html
sumber
<%-
melakukan apa pun untuk memimpin spasi putih, dan saya tidak melihatnya didokumentasikan di mana pun. Apa kamu yakin akan hal itu? Mungkin itu rasa ERB yang berbeda. Tidak ada opsi yang ditampilkan di stdlib docs.Rails tidak menggunakan ERB stdlib secara default, ia menggunakan erubis . Sumber: komentar dev ini , gemspec ActionView , menerima permintaan gabungan yang saya lakukan saat menulis ini .
Ada yang perbedaan perilaku antara mereka, khususnya pada bagaimana operator tanda hubung
%-
dan-%
pekerjaan.Dokumentasi langka, Di mana format ERB Ruby "resmi" didefinisikan? jadi yang berikut adalah kesimpulan empiris.
Semua tes misalkan:
Kapan bisa digunakan
-
-
ketrim_mode
opsiERB.new
untuk menggunakannya.Contoh:
Apa yang
-%
dilakukan:ERB: hapus karakter berikutnya jika itu adalah baris baru.
erubis:
di
<% %>
(tanpa=
),-
tidak berguna karena<% %>
dan<% -%>
sama.<% %>
menghapus baris saat ini jika hanya berisi spasi putih, dan tidak melakukan apa pun sebaliknya.dalam
<%= -%>
(dengan=
):Contoh:
Apa yang
%-
dilakukan:ERB: hapus spasi putih sebelum tag dan setelah baris baru sebelumnya, tetapi hanya jika hanya ada spasi putih sebelumnya.
erubis: tidak berguna karena
<%- %>
sama dengan<% %>
(tanpa=
), dan ini tidak dapat digunakan dengan=
satu-satunya kasus di mana-%
dapat berguna. Jadi jangan pernah gunakan ini.Contoh:
Apa
%-
dan-%
lakukan bersamaKombinasi yang tepat dari kedua efek secara terpisah.
sumber
<% %>
: Menjalankan kode ruby<%= %>
: Mencetak ke dalam file Erb. Atau peramban<% -%>
: Menghindari jeda baris setelah ekspresi.<%# %>
: Komentar ERBsumber
Saya telah menambahkan
<%%
pembatas tag literal sebagai jawaban untuk ini karena ketidakjelasannya. Ini akan memberitahu erb untuk tidak menafsirkan<%
bagian dari tag yang diperlukan untuk aplikasi js seperti menampilkan tooltips chart.js dll.Perbarui (Memperbaiki tautan rusak)
Segala sesuatu tentang ERB sekarang dapat ditemukan di sini: https://puppet.com/docs/puppet/5.3/lang_template_erb.html#tags
sumber
Ini digunakan dalam ruby di rel : -
<%%>: -
Tag <%%> digunakan untuk mengeksekusi kode Ruby yang tidak mengembalikan apa pun, seperti kondisi, loop, atau blok. Misalnya: -
<% =%>: -
gunakan untuk menampilkan konten.
<% -%>: -
Rail memanjang ERB, sehingga Anda bisa menekan baris baru hanya dengan menambahkan tanda hubung tambahan ke tag dalam templat Rails
<% #%>: -
komentar kodenya
sumber
<% %>
mengeksekusi kode di sana tetapi tidak mencetak hasilnya, misalnya:Kita dapat menggunakannya untuk jika lain dalam file erb.
Akan dicetak
temp is 1
<%= %>
mengeksekusi kode dan juga mencetak output, misalnya:Kita dapat mencetak nilai variabel rails.
Akan dicetak
1
<% -%>
Tidak ada bedanya karena tidak mencetak apa pun,-%>
hanya masuk akal<%= -%>
, ini akan menghindari baris baru.<%# %>
akan mengomentari kode yang tertulis di dalamnya.sumber