Rails使用链接截断帮助程序作为省略文本

Jak*_*zok 10 truncate ruby-on-rails helper

我有很长的描述,我想截断使用truncate helper.所以我使用:

truncate article.description, :length => 200, :omission => ' ...'
Run Code Online (Sandbox Code Playgroud)

问题是我想使用更多作为可点击链接,所以理论上我可以使用这个:

truncate article.description, :length => 200, :omission => "... #{link_to('[more]', articles_path(article)}"
Run Code Online (Sandbox Code Playgroud)

遗漏文本被处理为不安全,因此它被转义.我试图让它成为html_safe但它没有用,而不是链接[更多]我的浏览器仍然显示该链接的html.

有没有办法强制截断打印遗漏链接而不是遗漏文本?

Ada*_*bin 11

使用Rails 4,您可以/应该传入一个块来获取链接:

truncate("Once upon a time in a world far far away", 
  length: 10, 
  separator: ' ', 
  omission: '... ') {     
    link_to "Read more", "#" 
}
Run Code Online (Sandbox Code Playgroud)


Pan*_*kos 10

我建议你自己在一个帮助方法中做这个,这样你就可以对输出有更多的控制:

def article_description article
  output = h truncate(article.description, length: 200, omission: '...')
  output += link_to('[more]', article_path(article)) if article.description.size > 200
  output.html_safe
end
Run Code Online (Sandbox Code Playgroud)


and*_*rea 7

肮脏的解决方案...使用"原始"方法来解决它.
你必须确保你的内容"健全".

raw(truncate article.description, :length => 200, :omission => "... #{link_to('[more]', articles_path(article)}")
Run Code Online (Sandbox Code Playgroud)

raw是一个像html_safe一样的帮手.
再见

编辑:不是被遗漏的遗漏,而是截断方法的结果.