Conditionally assigning html id to link_to (tabbed interface)


#1

Hi all,
I am looking to implement a tabbed interface. The tabs are mere
link_to links in the template. All i need to do is, check if a
particular tab has been selected and if it has been selected, set
the :id attribute to ‘current’. The css code will take care of the
rest. I know the css works because when i explicitly set the :id =>
'current without any conditions, it shows in the browser.
I have however tried many variations and all are throwing me syntax
errors. Hope someone can give me the right syntax for this or at least
show a better way of implementing this.

<%= link_to ‘Companies’, companies_path(), :id=>“current” unless
controller.controller_name != ‘Companies’ %>
<%= link_to ‘Companies’, companies_path(), if
controller.controller_name == ‘Companies’ :id=>“current” end%>
<%= link_to ‘Companies’, companies_path(), if
controller.controller_name != ‘Companies’ :id=>“current” %>
<%= link_to ‘Companies’, companies_path(), if current_page?
(:controller=> ‘Companies’) :id=>“current” end%>

I have seen the rails widget s plugin for tabbed interface and it just
seems as too much code for something so simple.


#2

Vinay wrote:

seems as too much code for something so simple.
Creating your own tab link helper ought to ease things up:

def tab_link_to(name, options = {}, html_options = {})
html_options.merge!({ :id => ‘current’ }) if current_page?(options)
link_to name, options, html_options
end

Which you could then use in your view:

<% tab_link_to ‘Companies’, companies_path %>


#3

@Erol,
Thank you so much! I have been letting this bug me for a couple of
days now and to see your simple solution working is an amazing pick-me-
up! :slight_smile:
I think its the simplest tabbed interface code one could hope for.


#4

You might also want to look at link_to_unless_current (and perhaps its
source code) to see how you might change your helper (or abandon it
altogether in some cases).

-Rob


#5

check this out:
http://wiki.rubyonrails.org/rails/pages/Tabnav


#6

Thank you Rob.
I actually DID come across these helpers when i was searching around
for solutions. These though provide the link conditionally. If the
condition is not satisfied, the link itself does not exist, it only
renders text. But i need all the links to exist. And only the CSS id
to change conditionally. For which the code above worked like a charm.
Thanks again for your input!

On Oct 11, 7:41 pm, Rob B. removed_email_address@domain.invalid