我正在编写一个模型,用于处理来自文本区域的用户输入。按照http://blog.caboo.se/articles/2008/8/25/sanitize-your-users-html-input的建议,我使用before_validate回调在保存到数据库之前清理模型中的输入。
我的模型的相关部分如下所示:
include ActionView::Helpers::SanitizeHelper
class Post < ActiveRecord::Base {
before_validation :clean_input
...
protected
def clean_input
self.input = sanitize(self.input, :tags => %w(b i u))
end
end
不用说,这是行不通的。当我尝试保存一个新的帖子时,我得到了以下错误。
undefined method `white_list_sanitizer' for #<Class:0xdeadbeef>
显然,SanitizeHelper创建了一个HTML::WhiteListSanitizer的实例,但是当我将它混合到我的模型中时,它找不到HTML::WhiteListSanitizer。为什么?我能做些什么来修复它呢?
发布于 2011-09-29 14:31:59
这只提供了helper方法,没有将每个ActionView::Helpers方法加载到模型中的副作用:
ActionController::Base.helpers.sanitize(str)
发布于 2013-02-04 16:09:49
要从您自己的控制器访问帮助器,只需使用:
OrdersController.helpers.order_number(@order)
发布于 2016-08-12 13:36:58
如果你想在模型中使用my_helper_method
,你可以这样写:
ApplicationController.helpers.my_helper_method
https://stackoverflow.com/questions/489641
复制相似问题