如何在我的Model.rb中使用strip_tags和truncate?

时间:2011-02-17 05:47:31

标签: ruby-on-rails

strip_tags在我的视图页面中适用于我,但不适用于我的模型(我在before_save函数中使用它)

6 个答案:

答案 0 :(得分:58)

您还可以在模型中访问帮助程序,如下所示:

ActionController::Base.helpers.strip_tags(text)

答案 1 :(得分:12)

ActionView::Base.full_sanitizer.sanitize(your_html_string)

这对你有用。 或者您可以定义一个帮助器:

def strip_html_tags(string)
    ActionView::Base.full_sanitizer.sanitize(string)
end

然后使用它:

strip_html_tags(your_html_string)

要删除某些特定标记,请传递其他参数。 资料来源:Sanitize Rails API Dock

答案 2 :(得分:0)

穷人的截断者:

my_string[0, 145] 

它将在模型中工作,而无需从ActionController :: Base调用辅助方法。它不会为你添加省略号,但这可能很容易修复...

答案 3 :(得分:0)

因此,我不喜欢这些解决方案中的任何一个,因为我希望将视图功能保留在我的模型之外。因此,我改为使用装饰器(例如https://github.com/drapergem/draper),然后能够使用快捷方式h.strip_tags的辅助方法。

答案 4 :(得分:-1)

在控制器文件中插入“包括ActionView :: Helpers :: TextHelper”

引用:https://www.ruby-forum.com/topic/93036

答案 5 :(得分:-6)

strip_tags是一种帮助方法,并且通常在模型内部不提供帮助程序。

您可能希望使用sanitize gem之类的内容来代替