首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在模型中使用帮助器:如何包含帮助器依赖?

在模型中使用帮助器:如何包含帮助器依赖?
EN

Stack Overflow用户
提问于 2009-01-28 22:13:13
回答 4查看 107.4K关注 0票数 110

我正在编写一个模型,用于处理来自文本区域的用户输入。按照http://blog.caboo.se/articles/2008/8/25/sanitize-your-users-html-input的建议,我使用before_validate回调在保存到数据库之前清理模型中的输入。

我的模型的相关部分如下所示:

代码语言:javascript
复制
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

不用说,这是行不通的。当我尝试保存一个新的帖子时,我得到了以下错误。

代码语言:javascript
复制
undefined method `white_list_sanitizer' for #<Class:0xdeadbeef>

显然,SanitizeHelper创建了一个HTML::WhiteListSanitizer的实例,但是当我将它混合到我的模型中时,它找不到HTML::WhiteListSanitizer。为什么?我能做些什么来修复它呢?

EN

回答 4

Stack Overflow用户

发布于 2011-09-29 14:31:59

这只提供了helper方法,没有将每个ActionView::Helpers方法加载到模型中的副作用:

代码语言:javascript
复制
ActionController::Base.helpers.sanitize(str)
票数 136
EN

Stack Overflow用户

发布于 2013-02-04 16:09:49

要从您自己的控制器访问帮助器,只需使用:

代码语言:javascript
复制
OrdersController.helpers.order_number(@order)
票数 25
EN

Stack Overflow用户

发布于 2016-08-12 13:36:58

如果你想在模型中使用my_helper_method,你可以这样写:

代码语言:javascript
复制
ApplicationController.helpers.my_helper_method
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/489641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档