在Rails控制器中使用清理

pmc*_*255 24 controller ruby-on-rails helper sanitize

我想sanitize在控制器内打电话.这是我试过的:

class FooController < ApplicationController
  include ActionView::Helpers::SanitizeHelper
  # ...
end
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

undefined method `white_list_sanitizer' for FooController:Class
Run Code Online (Sandbox Code Playgroud)

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

undefined method `url_for' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

什么是正确的打电话方式sanitize?我正在使用Rails 2.3.5.

JCo*_*era 45

你可以使用这个ActionController::Base.helpers内部动作方法:

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

希望这可以帮助

  • 很好的答案,仍然。为了简洁起见,也可以缩写为“helpers.sanitize('&lt;b&gt;bold&lt;/b&gt;')”。 (2认同)

Art*_*rta 5

导轨 6:

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

...
Rails::Html::LinkSanitizer.new.sanitize("links here will be stripped")
...
Run Code Online (Sandbox Code Playgroud)

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


bod*_*ous -1

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

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

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

  • 他很可能尝试使用 AJAX 渲染文本而不使用视图。 (5认同)