显示代码块,但也解析其中的变量



Rails 7/Ruby 3

我目前正在一个网站上工作,需要代码示例显示在一个页面上-我可以让这些显示利用额外的%字符技巧,然而,对于一些例子,我需要有一个变量在他们被解决(例如像用户自己的API密钥等…)。

假设我有@variable = "Resolved Variable"

<%%= link_to @variable, variable_path %>

在页面上显式地输出为<%= link_to @variable, variable_path %>

但是我真的需要@variable来解析并在页面上显示为:

<%= link_to "Resolved Variable", variable_path %>

我已经尝试了各种转义变量,但似乎<%%=确保它后面的任何东西都不能解决。

任何想法?

任何您没有html_encode编辑的文本将显示为纯文本。我给你的建议是创建一个内插字符串,你可以用它来生成你想要的结果。例如:

output_text = "<%= link_to '#{@variable}', variable_path %>"

并且,不确定这是否是你正在寻找的,但是你可以通过添加一些Javascript库来格式化你在intent语言中的代码(在这种情况下,似乎是Ruby)来获得一个好的UI。

如果您对此感兴趣,请查看Prism库,或者查看如何将其添加到您的项目中

我希望这对你有帮助。致以亲切的问候,Rogerio

ERB中的<%%将简单地输出<%,不多也不少。特别是,它不会尝试将<%%之后的代码解析为Ruby。但是,这并不意味着在<%%:

之后不能有另一个<%= ... %>:
require 'erb'
template = <<-EOD
<%%= link_to <%= @variable.inspect %>, variable_path %>
EOD
@variable = "Resolved Variable"
puts ERB.new(template).result

inspect方法将在字符串周围添加引号,并根据需要转义某些字符。

输出:

<%= link_to "Resolved Variable", variable_path %>

最新更新