Ruby on rails 改进了对Rails中链接的使用?

Ruby on rails 改进了对Rails中链接的使用?,ruby-on-rails,views,Ruby On Rails,Views,My Rails应用程序在各种视图中多次使用此链接格式: <li><a class="" href="#"><i class="icon-briefcase"></i> Reports</a></li> 到目前为止,我已使用以下格式对其进行了转换: <li><%= link_to raw('<i class="icon-home"></i> Dashboard'), root_

My Rails应用程序在各种视图中多次使用此链接格式:

<li><a class="" href="#"><i class="icon-briefcase"></i> Reports</a></li>
  • 到目前为止,我已使用以下格式对其进行了转换:

    <li><%= link_to raw('<i class="icon-home"></i> Dashboard'), root_path %></li>
    

  • 我是否可以更进一步,以某种方式重构li和I class=“icon home”以清理代码?

    您可以添加一个helper方法

    def menu_link(text, url, icon_class)
      content_tag :li do
        link_to url do
          content_tag(:i, '', class: icon_class) + text
        end.html_safe
      end
    end
    
    那就用你的名字来称呼它吧

    <%= menu_link 'Dashboard', root_path, 'icon-home' %>
    

    您可以添加助手方法

    def menu_link(text, url, icon_class)
      content_tag :li do
        link_to url do
          content_tag(:i, '', class: icon_class) + text
        end.html_safe
      end
    end
    
    那就用你的名字来称呼它吧

    <%= menu_link 'Dashboard', root_path, 'icon-home' %>
    

    如果您在多个位置(干燥)使用此方法,则首选辅助方法。看看jvnill的答案

    如果您想要一行,请点击这里:

    <%= content_tag(:li, link_to(content_tag(:i, nil, class: 'icon-home'), root_path)) %>
    

    如果您在多个位置(干燥)使用此方法,则首选辅助方法。看看jvnill的答案

    如果您想要一行,请点击这里:

    <%= content_tag(:li, link_to(content_tag(:i, nil, class: 'icon-home'), root_path)) %>
    
    
    
    这样更好:

    = link_to new_resource_path, :class=>'btn btn-primary' do
      %i.icon-file-new
      Add Resource
    
    这样更好:

    = link_to new_resource_path, :class=>'btn btn-primary' do
      %i.icon-file-new
      Add Resource
    

    如果你在使用HAML,哪个OP没有使用。如果你在使用HAML,哪个OP没有使用。谢谢看起来不错。我可能会使用不适合helper方法的实例。谢谢看起来不错。我可能会对不适合helper方法的实例使用。有助于清除指向调用的链接的gem:。它不太适合讨论中的这种特定类型的链接,但对于许多其他类型的链接,它正好解决了这个问题(以及其他一些问题)。有助于将链接\u干燥到调用的gem:。它不太适合讨论中的这种特定类型的链接,但对于许多其他类型的链接,它正好解决了这个问题(以及其他一些问题)。