Saya tidak mengerti bagaimana Twitter Bootstrap melakukan tautan aktif untuk navigasi. Jika saya memiliki navigasi biasa seperti ini (dengan ruby di rel yang menghubungkan):
<ul class="nav">
<li class="active"> <a href="/link">Link</a> </li>
<li class=""> <a href="/link">Link</a> </li>
<li class=""> <a href="/link">Link</a> </li>
</ul>
Bagaimana cara membuatnya tetap aktif berdasarkan tautan yang diklik?
ruby-on-rails
twitter-bootstrap
LearningRoR
sumber
sumber
Jawaban:
Baru saja membuat jawaban untuk pertanyaan yang sama di sini Twitter Bootstrap Pills with Rails 3.2.2
sumber
%li{:class => "#{'active' if current_page?(root_path)}"}=link_to "Home", root_path
controller_name
danaction_name
helper daripada mengaksesnya dari hash params.Anda dapat menggunakan sesuatu seperti (sangat mirip dengan apa yang @phil sebutkan, tetapi sedikit lebih pendek):
sumber
'active' if params[:controller] == 'controller1'
user_*_path
di<%= 'active' if current_page?(root_path) %>
?https://github.com/twg/active_link_to
#=> <li class="active"><a href="https://stackoverflow.com/users">Users</a></li>
sumber
Saya menggunakan helper untuk mengimplementasikan ini dalam gaya form helper Rails.
Di helper (mis.
app/helpers/ApplicationHelper.rb
):Kemudian, dalam tampilan (mis.
app/views/layouts/application.html.erb
):Contoh ini menghasilkan (saat berada di halaman 'pengguna'):
sumber
Gunakan ini sebagai gantinya untuk memilih tautan aktif di nav berdasarkan pada rute saat ini tanpa kode server:
sumber
$('li.active').closest('.dropdown').addClass('active');
untuk menyorot menu induk juga.Saya telah menemukan kesuksesan menggunakan logical dan (
&&
) di haml :sumber
Untuk setiap tautan:
atau bahkan
sumber
tidak yakin apakah Anda bertanya tentang bagaimana twitter bootstrap css digunakan, atau sisi rel. Saya mengasumsikan sisi rel.
jika demikian periksa
#link_to_if
metode atau#link_to_unless_current
metode tersebutsumber
Hari ini saya memiliki pertanyaan / masalah yang sama tetapi dengan pendekatan lain untuk solusinya. Saya membuat fungsi pembantu di application_helper.rb:
dan tautannya terlihat seperti ini:
Anda dapat mengganti
params[:action]
denganparams[:controller]
dan mengatur nama pengontrol Anda di tautan.sumber
Saya menggunakan ini untuk setiap
li
:<li><%= link_to_unless_current('Home', root_path) { link_to('Home', root_path, class: 'active') } %></li>
sumber
li
tidaka
Anda dapat menentukan metode pembantu di
application_helper.rb
Sekarang Anda bisa menggunakan seperti:
create_link 'xyz', any_path
yang akan dirender sebagaiSemoga membantu!
sumber
Anda harus melakukannya sendiri dengan memanipulasi kelas CSS. Artinya, jika pengguna mengklik beberapa link, kemudian melakukan sesuatu (tindakan target), mengatur link sebelumnya tidak aktif dan link baru aktif.
Jika tautan Anda membawa Anda ke server (yaitu, membuat halaman dimuat ulang), maka Anda dapat membuat tautan aktif dengan benar di server. Jika tidak, jika Anda melakukan beberapa hal sisi klien (beralih panel tab atau apa pun), Anda harus menggunakan javascript.
sumber
Anda bisa menggunakan tabulous untuk tautannya
artikel di sini tentang cara menggabungkan tabulous dengan twitter bootstrap dan rails 3.x.
sumber
Saya menulis metode helper sederhana menggunakan build in view helper
current_page?
ketika Anda dapat menentukanclass
nama kustom dalamhtml_options
hash.Contoh (saat Anda dalam
root_path
perjalanan):sumber
Banyak dari jawaban di sini memiliki hal-hal yang akan berhasil, atau jawaban sebagian. Saya menggabungkan banyak hal untuk membuat metode penolong rel ini yang saya gunakan:
Itu bisa dibuat lebih menarik dengan pemeriksaan argumen untuk mendukung
&block
link_to dll.sumber
Sudah banyak jawaban, tapi inilah yang saya tulis untuk membuat Ikon Bootstrap bekerja dengan tautan aktif. Semoga Ini akan membantu seseorang
Pembantu ini akan memberi Anda:
Taruh ini di application_helper.rb Anda
Dan gunakan tautan:
Argumen terakhir adalah opsional - ini akan menambahkan ikon ke tautan. Gunakan nama ikon mesin terbang. Jika Anda menginginkan ikon tanpa teks:
sumber
Inilah yang saya lakukan:
Saya membuat ViewsHelper dan disertakan dalam ApplicationController:
Di dalam ViewsHelper saya membuat metode sederhana seperti ini:
Dalam pandangan saya, saya melakukan ini:
sumber
Anda terdengar seperti Anda perlu menerapkan sistem navigasi. Jika rumit, mungkin akan menjadi sangat jelek dan cukup cepat.
Dalam kasus ini, Anda mungkin ingin menggunakan plugin yang bisa mengatasinya. Anda bisa menggunakan navigasmic atau navigasi sederhana (saya akan merekomendasikan navigasmic karena itu membuat lapisan utama dalam tampilan, tempatnya, dan tidak dalam beberapa konfigurasi)
sumber
Kode terpendek
Ini berhubungan dengan KEDUA nav, dan elemen daftar sub nav. Anda dapat melewatkan salah satu larik jalur tunggal dan akan menangani keduanya.
application_helper
lihat (html.erb)
sumber
Menggunakan ruby di Sinatra ..
Saya menggunakan tema bootstrap telanjang, berikut adalah contoh kode navbar. Catat nama kelas elemen -> .nav - karena ini disebut dalam java script.
di halaman tampilan (atau sebagian) tambahkan ini: javascript, ini perlu dijalankan setiap kali halaman dimuat.
potongan tampilan haml ->
Dalam debugger javascript, pastikan Anda memiliki nilai atribut 'href' yang cocok dengan window.location.pathname. Ini sedikit berbeda dari solusi oleh @Zitrax yang membantu saya memperbaiki masalah saya.
sumber
Dasar, Tidak Ada Pembantu
Saya menggunakan ini karena saya memiliki lebih dari satu kelas -
sumber
ramping
sumber