我想把一个链接中的target="_blank”属性放到一个Active Storage Blobs局部视图(app/views/active_storage/blobs/_blob.html.erb)中,但最终的html中没有显示该属性。
app/views/active_storage/blobs/_blob.html.erb
<%= link_to blob.filename, rails_blob_path(blob), target: "_blank" %>
字符串
在最后的HTML中,没有显示target="_blank”:
<a href="/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBDZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--48145f82f0b597246f7579fe56b06f563320fe15/file.pdf">file.pdf</a>
型
事实上,为了测试,我把HTML标签而不是link_to助手,也不起作用。然而,在另一种观点中,它起作用了。
我用ID属性测试过,也不起作用。
**Ruby版本:**ruby 3.2.2(2023-03-30 revision e51014 f9 c 0)[x64-mingw-ucrt]
**Rails版本:**Rails 7.0.6。
**操作系统:**Windows 11。
谢谢你的帮助,非常感谢
1条答案
按热度按时间cu6pst1q1#
如果渲染的是Action Text,那么HTML将被清理。
render_action_text_content
帮助器方法使用Rails::Html::Sanitizer.safe_list_sanitizer
,默认情况下将去掉target
属性。测试发生了什么的一种方法是进入Rails控制台并执行以下操作:
字符串
要允许
target
属性,您可以将其添加到初始化器,然后重新启动应用:型
这将允许
target
通过:型
请注意,默认情况下去除
target
属性的原因是为了防止制表符。请参阅this post,了解有关相关攻击的更多信息,以及如果您决定允许target
属性,如何在rel
属性中使用noreferrer
来防止安全问题。