Add an 'active' class to all active links in rails?

后端 未结 7 594
醉酒成梦
醉酒成梦 2021-02-05 15:08

Basically, I have a lot of code that looks like this:

link_to t(\'.profile\'), business_path(@business), class: \'#{\'active\' if current_page? business_path(@bu         


        
7条回答
  •  梦谈多话
    2021-02-05 15:37

    I wrote simple helper method using build in view helper current_page? when you can specify custom class name in html_options hash.

    def active_link_to(name = nil, options = nil, html_options = nil, &block)
      active_class = html_options[:active] || "active"
      html_options.delete(:active)
      html_options[:class] = "#{html_options[:class]} #{active_class}" if current_page?(options)
      link_to(name, options, html_options, &block)
    end
    

    Examples (when you are on root_path route):

    <%= active_link_to "Main", root_path %>
    # Main
    
    <%= active_link_to "Main", root_path, class: "bordered" %>
    # Main
    
    <%= active_link_to "Main", root_path, class: "bordered", active: "disabled" %>
    # Main
    

提交回复
热议问题