ruby-on-rails to_sentence和html_safe一起使用?

wpx232ag  于 2023-08-08  发布在  Ruby
关注(0)|答案(4)|浏览(75)

下面是我想要的字符串:

<a href="/pugs/1-baxter">Baxter</a> and <a href="/pugs/2-sofia">Sofia</a>

字符串
下面是我用来输出的代码:

<%= @pugs.collect {|p| link_to(p.name, pug_path(p))}.to_sentence %>


不幸的是,输出正在被编码:

&lt;a href=&quot;/pugs/1-baxter&quot;&gt;Baxter&lt;/a&gt; and &lt;a href=&quot;/pugs/2-sofia&quot;&gt;Sofia&lt;/a&gt;


我试过使用html_saferaw,但它们似乎没有任何影响。

nnt7mjpx

nnt7mjpx1#

在Rails 5中,有一个to_sentence视图助手(不同于Array#to_sentence)可以完成此操作。
从文档:

to_sentence(array,options = {})

将数组转换为逗号分隔的句子,其中最后一个元素由连接词连接。这是ActiveSupport的Array#to_sentence的html_safe版本。
像这样使用它:<% to_sentence(@pugs.collect {|p| link_to(p.name, pug_path(p))}) %>

flmtquvp

flmtquvp2#

<%= @pugs.collect {|p| link_to(p.name, pug_path(p))}.to_sentence.html_safe %>

字符串

z2acfund

z2acfund3#

您可以将其 Package 在span中并使用辅助器:

def content_link_to(name,path=nil,options=nil)
    content_tag :span do
      link_to name, path, options
    end
  end

字符串
并按如下方式使用它:

<%= @pugs.collect {|p| content_link_to(p.name, pug_path(p))}.to_sentence %>

mv1qrgav

mv1qrgav4#

如果你想把它放在翻译中,你可以在翻译键的末尾添加_html,如下所示:

<%= t(".public_rooms_html", rooms: to_sentence(@public_rooms.map { |room| link_to(room.to_s, room) })) %>

字符串

相关问题