How to style currently active link

I have four links on a page generated with link_to . I want to style the
currently active link differently than the other 3. I tried passing
:class => “selected” to link_to but it adds this tag to all 4 links, not
just the currently active one.

anyideas?

(this is for tabbed navigation)

i don’t see your code, but generally it works like this:
<%= link_to “Link name”, { :controller => ‘controller_name’, :action
=> ‘action_name’ }, :class => ‘someclass’ %>

then you style your “someclass” via css.

MaD wrote:

i don’t see your code, but generally it works like this:
<%= link_to “Link name”, { :controller => ‘controller_name’, :action
=> ‘action_name’ }, :class => ‘someclass’ %>

then you style your “someclass” via css.

Thanks for the reply, but doesnt the above add the class “someclass” to
all four links at the same time? I dont want to do taht, i want to add
something like “selected” to the currently active link and “unselected”
to the other three? If that is so how would you style the currently
selected link differently that the other three?

I think that you’re looking for something like that…

<%= link_to_unless_current(‘Add contact’, new_contact_url, :class =>
‘adduser’) { link_to(‘Add contact’, new_contact_url, :class =>
‘selected’) } %>

http://apidock.com/rails/ActionView/Helpers/UrlHelper/link_to_unless_current

Adam A. escribió:

Thank you both for your responses.

Ive gone with Juans as it does what i need is shorter code. The only one
problem is that it results in the selected link still being selectABLE
ie. it can still be clicked on even though its the current page in view.
I can style it so that it looks like it isnt clickable so top banana!

if there is a way to fix this minor side issue id love to know.

many thanks

In this video you’ll see the behaviour you’re looking for… (min 33)

http://s3.amazonaws.com/lr_screencasts/learningrails-17.mov

Adam A. escribió:

On Feb 9, 10:04 am, Adam A. [email protected]
wrote:

I have four links on a page generated with link_to . I want to style the
currently active link differently than the other 3. I tried passing
:class => “selected” to link_to but it adds this tag to all 4 links, not
just the currently active one.

anyideas?

(this is for tabbed navigation)

Posted viahttp://www.ruby-forum.com/.

Well the problem is that you need to set class=“#{‘selected’ if
SOMETHING}” so the question becomes “what is SOMETHING?”.

This might get criticised but here is what I am doing in my current
app. I have a helper that looks something like

def class_for_link(uri)
hsh = ActionController::Routing::Routes.recognize_path(uri,
{ :method => :get }) # You might need to gsub out the root of this url
first
[hsh[:controller], hsh[:action]] == [controller.controller_name,
controller.action_name] ? ‘active’ : ‘’
end

Then in the views I can say something like

<%= link_to “John”, person_path(1), :class => 'style1 style2 ’ +
class_for_link(person_path(1)) %>