加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在Rails视图中截断Sanitize

发布时间:2020-12-16 19:04:15 所属栏目:百科 来源:网络整理
导读:今天我遇到了一个小问题,当时我试图使用sanitize和truncate来相互结合,为我的博客创建一个摘录.每种方法都可以单独使用,但是一起使用它只会截断.我尝试了这两种语法(前者在一篇名为“Six Ruby on Rails Tips Tricks”的博文中被推荐): %= truncate(sanitize
今天我遇到了一个小问题,当时我试图使用sanitize和truncate来相互结合,为我的博客创建一个摘录.每种方法都可以单独使用,但是一起使用它只会截断.我尝试了这两种语法(前者在一篇名为“Six Ruby on Rails Tips& Tricks”的博文中被推荐):
<%= truncate(sanitize(post.content),length: 580) %>
<%= sanitize(truncate(post.content,length: 580,separator: '<p>')) %>

然后我尝试将truncate放在控制器中,并在视图中清理该对象,但仍然没有.

最后我让它像这样工作:

<%= sanitize(post.content.truncate(580,separator: '</p>')) %>

我想知道的是,当我用另一种方法包装方法时,为什么它不起作用?我试过的最后一种方式有什么不同?

TIA
‘bondibox’

解决方法

Truncate和Sanitize不包含在控制器中,它们分别是ActionView :: Helpers :: TextHelper和ActionView :: Helpers :: SanitizeHelper的一部分.默认情况下,这些模块不包含在控制器中,因此您无法在其中使用它们.

但是,两者都包含在视图(模板)中,因此您可以在其中使用它们.您可以在控制器类中包含上述模块以在那里使用它们,但我不推荐它.

第二个语句起作用的原因是因为Rails从Ruby扩展了一些基础对象,比如带有几个methods的String.所以你实际上在一个字符串的截断版本上调用了sanitize.

两者的结合有点棘手.我无法真正告诉你为什么没有更多信息,sanitize和truncate的模块版本的组合不起作用.你究竟在这里完成了什么(例子?)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读