0

在 Rails 5.1 下,我使用 Trix 来允许用户编辑他们的“法律条件”。然后我试图在更新用户记录之前在我的控制器中清理这个“合法”参数,但最终得到:

undefined method `sanitize'

这里的代码:

params[:user][:legal] = sanitize params[:user][:legal], tags: %w(strong div strong br li ul)

def user_params
  params.require(:user).permit(:presentation, :linktowebsite, :legal)
end

没有看到与此处显示的正常用法不同的任何内容:http: //api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html

4

1 回答 1

0

你没有sanitize正确使用。sanitize在视图中使用,而不是在控制器中使用。

要正确使用它,您的模型应该允许一个字段保存用户的 html 输入,但是您希望在视图中使用它时“清理”它,以防止发送/显示不安全或未列入白名单的标签/属性给用户。

如果您希望在保存之前删除 html 标签/属性,您可能需要查看strip_tags

strip_tags("Strip <i>these</i> tags!")
# => Strip these tags!

strip_tags("<b>Bold</b> no more!  <a href='more.html'>See more here</a>...")
# => Bold no more!  See more here...

strip_tags("<div id='top-bar'>Welcome to my website!</div>")
# => Welcome to my website!
于 2018-03-12T01:45:41.407 回答