簡體   English   中英

如何在 Rails ERB 視圖中轉義塊中的所有 HTML

[英]How to escape all HTML in a block in Rails ERB view

基本上我想要如下內容:

<code class="snippet">
   <%= html_escape do %>
      <a href="#">My markup displayed to user</a>
   <% end %>
</code>

但是 html_escape 方法不接受塊。 如果這不是在其他地方構建到 Rails API 中,也許使用一些幫助程序,有沒有人有關於如何制作自定義幫助程序的建議,其中 yield 語句輸出被捕獲到一個字符串中,然后我可以自己轉義?

謝謝,

基思

Rails 的captureescape_once輔助方法可以從erb模板中的塊創建一個String ,然后輸出它的轉義版本:

<% snippet = capture do %>
    <a href="#">My markup displayed to user</a>
<% end %>
<code><%= escape_once snippet %></code>

content_for是另一個提供與capture類似功能的助手,您可以根據情況考慮使用。

解釋一下, snippet是一個ActiveSupport::SafeBuffer ,這就是為什么需要escape_once 你可以通過調用達到同樣snippet.to_str代替escape_once snippet (但是.to_s將無法工作,因為這是不同的,以.to_strActiveSupport::SafeBuffer )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM