【问题标题】:Linking Font Awesome icon to Rails attribute将 Font Awesome 图标链接到 Rails 属性
【发布时间】:2015-07-14 23:55:19
【问题描述】:

我正在尝试将 Font Awesome 图标与 Rails 属性的字符串进行超链接。

我试过了,

  <%= link_to do %>
    <i class="fa fa-link"><% school.website %></i>
  <% end %>

这个,

<i class="fa fa-link" href="<% school.website %>"></i>

还有这个:

<i class="fa fa-link" href="<%= school.website %>"></i>

在其他变体中,似乎无法正确使用语法。

非常感谢这里的语法帮助,似乎无法找到与属性链接如何工作的具体答案,只有实际的静态文本 hrefs。

PS:我是 Rails 新手/使用 Rails 4.2。

【问题讨论】:

  • 如果您向我们展示上述每个错误是什么(即不希望的输出),这将真的很有帮助 - 并给我们一个您想要的输出的样本?
  • 另外:&lt;% school.website %&gt; 永远不会起作用 - 您必须使用 &lt;%= 才能使输出实际出现在页面上
  • 最后:你能举一个虚构的例子来说明school.website 的样子吗?里面有http://吗?

标签: ruby-on-rails font-awesome


【解决方案1】:

试试这个:

<%= link_to ('<i class="fa fa-link"></i>').html_safe, desired_path  %>

【讨论】:

  • 这会将我当前的 URL 添加到所需的 URL 并带我到:link,因为我需要使用 &lt;%= link_to ('&lt;i class="fa fa-link"&gt;&lt;/i&gt;').html_safe, school.website %&gt; 作为您的示例。
  • desired_pa​​th 需要是您希望它去的 Rails 路径。您希望它在您的应用程序中的哪个位置?运行rake routes 并传递你想要的路由到link_to 并附加_path
  • 对不起,我的错误。您提供的是正确的语法。但是,这仅在school.website 的值为https://... 时才有效。否则,它会认为这是一条路径,并把它当作一个蛞蝓。谢谢!
【解决方案2】:

考虑到 school.website 是一个 URL,并且您已经在 CSS 中包含了图标,以下将是可行的:

<%= link_to(school.website) do %>
    <i class="fa fa-link"></i>
<% end %>

【讨论】:

    【解决方案3】:

    将它作为一个块传递也可以。

     <%= link_to school.website do  %>
       <%= '<i class="fa fa-link"></i>'.html_safe %>
     <% end %>
    

    【讨论】:

      【解决方案4】:

      假设 school.website 是您想要链接到的 URL,并在来自 font awesome 的链接图标旁边显示该链接:

      <%= link_to("<i class='fa fa-link'></i> #{school.website}".html_safe,school.website) %>
      

      【讨论】:

        【解决方案5】:

        我将提出一些不同的建议。

        我个人在我的网站上经常使用 glyphicons/fa,所以我决定在 application_helper.rb 中创建一个小助手

        application_helper.rb

        def fa(glyph, text = nil)
            html = "<i class=\"fa fa-#{glyph}\"></i>"
            html << " #{text.to_s.html_safe}" if text
            html.html_safe
        end
        

        实际上,在视图中使用的正确语法变为:

        <%= link_to(school.website, class: "xxx") do %>
          <%= fa('link') %>
        <% end %>
        

        OR(更紧凑)

        <%= link_to(school.website, class: "xxx"){ fa('link') } %>
        

        【讨论】:

        • 我记得有一个button_to/link_to 不支持 html 作为 "text" 参数,所以使用块来提供 html 文本内容是一个好习惯
        【解决方案6】:

        如果您的链接目标难以放入名称参数中,您也可以使用块。 ERB 示例:

        试试这个:

        <%= link_to(school.website) do %>
            <%= fa_icon "fas link" %>
        <% end %>
        

        【讨论】:

          猜你喜欢
          • 2019-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-12
          • 1970-01-01
          • 2019-12-31
          相关资源
          最近更新 更多