Saya ingin melakukan rendering bersyarat pada tingkat tata letak berdasarkan template sebenarnya yang telah ditentukan content_for(:an__area)
, ada ide bagaimana cara melakukannya?
ruby-on-rails
layout
yield
William Yeung
sumber
sumber
Jawaban:
@content_for_whatever
sudah ditinggalkan. Gunakancontent_for?
sebagai gantinya, seperti ini:sumber
content_for?
hanya ada di Rails 3. Di Rails 2 Anda bisa menggunakan@content_for_...
variabel instance.tidak terlalu diperlukan untuk membuat metode pembantu:
maka tentu saja menurut pandangan Anda:
Saya menggunakan ini sepanjang waktu untuk secara kondisional pergi antara satu kolom dan dua tata letak kolom
sumber
sumber
Dapat membuat pembantu:
Dan gunakan ini dalam tata letak Anda:
sumber
Ok saya akan tanpa malu-malu melakukan balasan sendiri karena tidak ada yang menjawab dan saya sudah menemukan jawabannya :) Definisikan ini sebagai metode penolong baik di application_helper.rb atau di mana pun Anda merasa nyaman.
sumber
instance_variable_defined?(content_var_name)
sedikit lebih rapi daripada menguji apakah itu nihil. Poin kedua yang lebih besar, variabel instance content_for tidak digunakan lagi sehingga solusi Anda bukan bukti masa depanSaya tidak yakin dengan implikasi kinerja dari memanggil yield dua kali, tetapi ini akan dilakukan terlepas dari implementasi internal yield (@content_for_xyz tidak digunakan lagi) dan tanpa kode tambahan atau metode pembantu:
sumber