【问题标题】:Using sanitize within a Rails controller在 Rails 控制器中使用 sanitize
【发布时间】:2011-04-28 12:15:52
【问题描述】:

我正在尝试在控制器中调用 sanitize。这是我尝试过的:

class FooController < ApplicationController
  include ActionView::Helpers::SanitizeHelper
  # ...
end

但是,我收到了这个错误:

undefined method `white_list_sanitizer' for FooController:Class

我四处搜索,人们建议将包含行切换为包含 ActionView::Helpers,但这会导致此错误:

undefined method `url_for' for nil:NilClass

拨打sanitize 的正确方法是什么?我正在使用 Rails 2.3.5。

【问题讨论】:

  • 例如,在将用户输入传递给 RDiscount 以从 Markdown 内容生成 HTML 之前对其进行清理。

标签: ruby-on-rails controller helper sanitize


【解决方案1】:

我不确定您要在这里做什么,但我几乎 100% 确定它不属于控制器。

如果您想在将属性保存到数据库之前对其进行清理,请在模型中使用保存前回调执行此操作。

否则,请在视图模板或视图助手中进行清理。

【讨论】:

  • 他可能是在尝试使用 AJAX 渲染文本而不使用视图。
  • 或编写一个需要清理 html 的 API
【解决方案2】:

你可以使用这个ActionController::Base.helpers inside action 方法:

class SiteController < ApplicationController
  def index
    render :text => ActionController::Base.helpers.sanitize('<b>bold</b>')
  end
end

希望对你有帮助

【讨论】:

  • 非常感谢!仅供记录(和谷歌):这是从控制器调用的辅助方法中使用消毒剂的完美解决方案。
  • 很好的答案,仍然。为了简洁,也可以缩写为 helpers.sanitize('&lt;b&gt;bold&lt;/b&gt;')
【解决方案3】:

导轨 6:

要从文本中删除链接(例如),只需调用:

...
Rails::Html::LinkSanitizer.new.sanitize("links here will be stripped")
...

https://github.com/rails/rails-html-sanitizer

【讨论】:

    猜你喜欢
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 2011-08-22
    • 2011-05-09
    • 1970-01-01
    相关资源
    最近更新 更多