Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
## by Ryan Heath: http://rpheath.com ## ## This is a nice and easy way to dynamically build a tabbed menu for certain ## actions within a controller. By using conventions, you can guarantee that ## the named routes will be unique based on the controller/action pair ## ## The controller name will be appended onto the links passed into the helper, ## which will also generate the named route for that action as well ## ## The convention: ## routes: (name of the action)_(controller_name) ## ## Example will use three actions in public_controller.rb # views/public/[whatever].rhtml # <%= navigation ['login','register','about'] -%> # helpers/application_helper.rb def navigation(links) returning html = "<ul>" do links.each do |link| html << "<li class='#{css_for(link)}'>#{build_link_for(link)}</li>" end html << "</ul>" end end # helpers/application_helper.rb def css_for(link) controller.action_name.downcase == link.downcase ? 'current' : 'plain' end # helpers/application_helper.rb def build_link_for(link) link_to link.capitalize, send("#{link.downcase}_#{controller.controller_name.downcase}_path") end # config/routes.rb map.with_options :controller => 'public' do |path| path.login_public '/login', :action => 'login' path.register_public '/register', :action => 'register' path.about_public '/about', :action => 'about' end
This paste will be private.
From the Design Piracy series on my blog: