aboutsummaryrefslogtreecommitdiff
path: root/content/post/2008-9-27-highlight-link-based-on-current-page-in-rails.markdown
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--content/post/2008-9-27-highlight-link-based-on-current-page-in-rails.markdown31
1 files changed, 31 insertions, 0 deletions
diff --git a/content/post/2008-9-27-highlight-link-based-on-current-page-in-rails.markdown b/content/post/2008-9-27-highlight-link-based-on-current-page-in-rails.markdown
new file mode 100644
index 0000000..e696208
--- /dev/null
+++ b/content/post/2008-9-27-highlight-link-based-on-current-page-in-rails.markdown
@@ -0,0 +1,31 @@
+---
+layout: post
+title: "Highlight link based on current page in rails"
+date: 2008-09-27T19:47:00Z
+comments: false
+permalink: /post/52081481/highlight-link-based-on-current-page-in-rails
+categories:
+---
+
+
+
+This is common pattern in website navigation, where it highlights the link (usually by setting `class=”active”`) that took you to the current page while you are on that page.
+
+First, define a helper:
+
+```ruby
+def is_active?(page_name)
+ "active" if params[:action] == page_name
+end
+
+```
+
+Then call it in your link_to’s in your layout as such:
+
+```ruby
+link_to 'Home', '/', :class => is_active?("index")
+link_to 'About', '/about', :class => is_active?("about")
+link_to 'contact', '/contact', :class => is_active?("contact")
+```
+
+This effect is achieved due to how link_to handles being passed `nil` for its `:class`, so when `is_active?` returns `nil` (because its not the current page), `link_to` outputs nothing as its class (not `class=””` as you might expect).