Dalam pandangan Anda, lakukan sesuatu seperti ini:
<% content_for :title, "Title for specific page" %>
<!-- or -->
<h1><%= content_for(:title, "Title for specific page") %></h1>
Berikut ini ada dalam file tata letak:
<head>
<title><%= yield(:title) %></title>
<!-- Additional header tags here -->
</head>
<body>
<!-- If all pages contain a headline tag, it's preferable to put that in the layout file too -->
<h1><%= yield(:title) %></h1>
</body>
Dimungkinkan juga untuk merangkum pernyataan content_for
dan yield(:title)
dalam metode pembantu (seperti yang telah disarankan orang lain). Namun, dalam kasus-kasus sederhana seperti ini saya suka memasukkan kode yang diperlukan langsung ke tampilan spesifik tanpa bantuan kustom.
Christoph Schiessl
sumber
<title><%= (yield(:title) + " - " unless yield(:title).blank?).to_s + "This is always shown" %></title>
dalam tata letak dan<% content_for :title, "Conditional title" %>
tampilan.<h1><%= content_for(:title, "Title for specific page") %></h1>
saya tidak melihat output apa pun ke DOM saya (yaitu saya miliki<h1></h1>
tanpa konten di dalamnya). Namun saya<title>Title for specific page</title>
bekerja dengan benar. Ada ide?Berikut adalah opsi sederhana yang ingin saya gunakan
Dalam tata letak Anda
Dan di bagian atas template halaman Anda (baris pertama)
Karena cara tata letak dan templat halaman diuraikan @ title = "Home" dievaluasi sebelum tata letak diberikan.
sumber
Praktik terbaik adalah menggunakan content_for.
Pertama, tambahkan beberapa metode pembantu (mis. Tetap di app / helpers / application_helper.rb):
Kemudian dalam tampilan tata letak Anda, Anda cukup menggunakan:
... dan dalam tampilan itu sendiri:
Cara ini memiliki keuntungan memungkinkan Anda untuk mengacak tempat Anda menempelkan tag h1 untuk judul Anda, dan menjaga pengontrol Anda tetap bagus dan bebas dari variabel @title sial.
sumber
@content_for_title
?@content_for_title
. Seharusnya(content_for(:title) + ' — ' if content_for?(:title)).to_s + 'My Cool Site'
. Kemudian untuk mengaturnya dari pandangan Anda, cukup<% content_for :title, 'My Page Title' %>
@content_for_title
adalah apa yang biasa terjadi ketika Anda digunakancontent_for
, pada saat komentar ini ditulis. Saya percaya ini bukan lagi masalahnya, tetapi saya belum melihat baru-baru ini. Komentar Toby J benar untuk Rails hari ini. Saya akan memperbarui jawaban asli saya.Peningkatan pada @opsb dan bentuk yang lebih lengkap dari @FouZ :
Di
application.html.erb
:Dalam tampilan erb file atau pengontrolnya:
sumber
Lihatlah ke
content_for
: http://railscasts.com/episodes/8sumber
Tanpa perincian lebih lanjut tentang kasus penggunaan atau persyaratan yang Anda coba penuhi, saya dapat memikirkan beberapa alternatif:
1) Ganti judul di salah satu halaman tata letak Anda dan gunakan metode pembantu yang tersimpan
application_helper.rb
Pendekatan ini akan memberi Anda judul unik untuk setiap halaman tata letak.
2) Railscast menyarankan menggunakan sebagian untuk memuat apa yang muncul di antara tag HEAD
3) Gunakan panggilan javascript / ajax untuk memanipulasi DOM jika Anda perlu mengubah judul setelah acara pemuatan.
Mungkin Anda tidak benar-benar ingin mengubah konten yang ditandai oleh
title
elemen. Mungkin Anda benar-benar membutuhkan semacam remah roti, sehingga pengguna Anda selalu tahu di mana mereka berada sehubungan dengan hierarki navigasi situs Anda. Sementara saya sudah melakukannya dengan baik dengan cara plugin goldberg, saya yakin ada cara lain untuk melakukan fungsi yang sama.sumber
Saya menggunakan "nifty_layout" dari nifty_generator yang menyediakan variabel judul yang dapat saya panggil di halaman menggunakan:
<% title "Title of page" %>
Saya juga dapat pengguna
<% title "Title of page", false %>
agar judulnya hanya ditampilkan di judul browser dan bukan di halaman itu sendiri.sumber
Anda juga bisa mengaturnya di before_filter di controller Anda.
Anda kemudian dapat mengatur kondisi dalam metode set_title untuk mengatur judul yang berbeda untuk tindakan yang berbeda di controller. Sangat menyenangkan bisa melihat semua judul halaman yang relevan di dalam pengontrol Anda.
sumber
saya menggunakan
plugin inipembantu Rails yang saya tulis: http://web.archive.org/web/20130117090719/http://henrik.nyh.se/2007/11/my-rails-title-helpers/sumber
pendekatan untuk pemberian judul halaman menggunakan metode content_for dan sebagian
1. nama parsial: _page_title.html.erb
2. Penggunaan di application.html.erb di dalam tag judul
3. Penggunaan di masing-masing * .html.erb tidak termasuk application.html.erb Cukup taruh ini di .html.erb dan berikan judul halaman
sumber
Singkatnya, saya bisa menuliskan ini sebagai berikut
sumber
Saya suka metode opsb, tetapi metode ini juga berfungsi.
sumber
Cara terbaik / bersih untuk melakukan ini:
sumber
Saya ingin menambahkan varian yang cukup sederhana.
Dalam ApplicationController, tentukan metode ini:
Setelah itu Anda dapat memanggil get_title dari tag judul tata letak Anda. Anda dapat mendefinisikan judul yang lebih spesifik untuk halaman Anda dengan mendefinisikan variabel @action_title_name dalam tindakan Anda.
sumber