2012-03-14 24 views
4

这里的字符串我想:to_sentence和html_safe在一起吗?

<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,但它们似乎没有任何影响。

回答

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

就像我说的,我已经试过了。它不起作用。 – Shpigford 2012-03-14 13:49:54

+0

它确实有效。可能还有其他错误:) – AMIT 2012-03-14 16:37:43

+0

+1这适用于我 – tokland 2012-05-11 10:59:21

1

你可以把它包在一个跨度,并使用一个帮手:

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 %> 
+0

只是为了输出html安全内容而在这些链接周围添加额外的HTML似乎过分。我只想让Rails输出实际的HTML而不是转义它。 – Shpigford 2012-03-14 13:51:08

2

铁轨5,有一个to_sentence视图助手(不同于Array#to_sentence)这样做。

the docs

to_sentence(数组,选项= {})
阵列到的最后一个元素是由 连接器接合字以逗号分隔的句子转换。这是ActiveSupport的支持html_safe的版本 Array#to_sentence。

这样使用它:<% to_sentence(@pugs.collect {|p| link_to(p.name, pug_path(p))}) %>