Ruby on Rails'te Breadcrumb kullanımı
Ekmek kırıntısı anlamına gelen breadcrumbs web sayfalarında kullanıcının bulunduğu yeri rahat takip edebilsin ve gezinebilsin diye koyulan navigasyon sistemidir.
Ruby on Rails'de bunun için geliştirilen breadcrumbs_on_rails geminin kullanımını anlatacağım.
Öncelikle
gem install breadcrumbs_on_rails
diyerek gemi kuruyoruz ve projemizin Gemfile'ına
gem 'breadcrumbs_on_rails'
satırıyla ekliyoruz.
Artık yapmamız gereken her controller methodu içerisinde kullanıcı oradayken ne görmesi gerekiyorsa
def show
@product = Product.find(params[:id])
add_breadcrumb @product.name, product_path(@product)
end
şeklinde yazmak. Bir method içerisinde birden fazla breadcrumb ekleyebilirsiniz. Hepsi sırasıyla görüntülenir.
Son olarak breadcrumb'ın görünmesini istediğiniz layout'ta
= render_breadcrumbs :separator => ' / '
koduyla breadcrumbları listeleyebilirsiniz.
Ayrıca farklı stillerde görüntülemek için kendiniz manuel builderlar yazabilirsiniz. Örneğin twitter bootstrap tarzı breadcrumb için örnek builder
class BootstrapBreadcrumbsBuilder < BreadcrumbsOnRails::Breadcrumbs::Builder
def render
@context.content_tag(:ul, :class => 'breadcrumb') do
elements_count = @elements.size
i = 0
@elements.collect do |element|
i += 1
render_element(element, last = (i == elements_count))
end.join.html_safe
end
end
def render_element(element, last = false)
current = @context.current_page?(compute_path(element))
@context.content_tag(:li, :class => ('active' if last)) do
if last
link_or_text = compute_name(element)
else
link_or_text = @context.link_to(compute_name(element), compute_path(element), element.options)
end
divider = @context.content_tag(:span, (@options[:separator] || ' > ').html_safe, :class => 'divider') unless current
link_or_text + (last ? '' : (divider || ''))
end
end
end
şeklindedir. Bunu lib/bootstrap_breadcrumbs_builder.rb
içine yazarak.
= render_breadcrumbs :builder => ::BootstrapBreadcrumbsBuilder, :separator => "»"
şeklinde kullanabilirsiniz.
comments powered by Disqus