rails way to make a tag class active in view?

(resending without being signed, sorry if the original shows up)

for example 3 is in active state. right now all i can think of is in
each action, just set a variable like @active = 'active' or '', but not
sure what to do with the span.

    <ul>
      <!-- The link you call "active" will show up as a darker tab -->
      <li><a href="index.html">1</a></li>
      <li><a href="index.html">2</a></li>
      <li class="active"> <span>3</span> </li>
      <li><a href="index.html">4</a></li>
      <li><a href="index.html">5</a></li>
    </ul>

--

Assuming that the "index.html" would actually be based on the 1, 2, etc.:

<ul>
<% for example in @examples %>
<li><%= link_to_unless_current example, example_path(example) do |text|
           content_tag(:span, text, :class => 'active')
         end %></li>
<% end %>
</ul>

When @examples = [1,2,3,4,5]
and example_path(3) => "/example/3"

Gives:
<ul>
<li><a href="/example/1">1</li>
<li><a href="/example/2">2</li>
<li><span class='active'>3</span></li>
<li><a href="/example/4">4</li>
<li><a href="/example/5">5</li>
</ul>

Is that what you're looking for? The link_to_if, link_to_unless, link_to_unless_current helpers take a block that is passed the text of the link when the condition isn't satisfied for making the link.

-Rob

Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com

Well, if you need to have
<li class="active"><span> ...
rather than
<li><span class="active> ...
Then you might have to restructure a bit (a listitem_link_to() might
work).

If you can live with decorating the contents of the span rather than
the li, you can do this:

<li><%= link_to_unless_current(example,
                                :action => 'get_category',
                                :category => example) do |text|
            content_tag(:span, text, :class => 'active')
          end %></li>

and if the current page's URL path matches what the parameters
construct, the link will be rendered.

You might also do: (nevermind, the alternative gets too ugly to even
consider. Use a custom helper method if you want to keep your view
cleaner)

Look at the documentation for current_page? and the various link_to
helpers and you ought to be able to figure it out. If you need more
help, show us your actual view and controller code snippets.

-Rob