何时(何时不)运行 `sanitize` 方法?
Posted
技术标签:
【中文标题】何时(何时不)运行 `sanitize` 方法?【英文标题】:When (and when not) to run the `sanitize` method? 【发布时间】:2019-08-28 05:03:42 【问题描述】:我想明确知道何时在我的 Rails 5 应用程序中运行(以及何时不运行,例如因为它会自动运行)sanitize
方法。
例如,在我的视图文件中,嵌入在<%= ... %>
中,我应该使用这些吗?
sanitize(record.value)
link_to(sanitize(record.value), ...)
tag.span(sanitize(record.value))
t("translation_string_html", :argument_value => sanitize(record.value))
还是这些?
record.value
link_to(record.value, ...)
tag.span(record.value)
t("translation_string_html", :argument_value => record.value)
【问题讨论】:
【参考方案1】:通常在使用 Rails 助手时不需要进行清理。
例如,如果您遵循link_to
方法到其末尾,则此处是相关行
https://www.rubydoc.info/github/rails/rails/ActionView%2FHelpers%2FTagHelper%2FTagBuilder:content_tag_string
def content_tag_string(name, content, options, escape = true)
tag_options = tag_options(options, escape) if options
content = ERB::Util.unwrapped_html_escape(content) if escape
"<#name#tag_options>#PRE_CONTENT_STRINGS[name]#content</#name>".html_safe
end
如您所见,它既是用 Erb 的一些实用程序转义的 html,又是用 html_safe
转义的,最后返回。
【讨论】:
以上是关于何时(何时不)运行 `sanitize` 方法?的主要内容,如果未能解决你的问题,请参考以下文章
在 NextJS s-s-r 流程中何时以及如何调用 React 生命周期方法?
PreApplicationStartMethod 何时真正被触发运行?