gpt4 book ai didi

ruby-on-rails - 使用 erb 渲染一个变量

转载 作者:数据小太阳 更新时间:2023-10-29 07:43:37 25 4
gpt4 key购买 nike

我遇到了以下问题:我将 rhtml(在 <% %> 和 <%= %> 标签内与 ruby​​ 混合在一起的 html)存储在我想要呈现的数据库中。这些信息是通过查询获取的。我需要能够评估我从数据库中获得的信息,就好像它是 .erb 文件中的正常内容一样。我目前拥有的:

<% @mymods.each do |mod| %>
<%= render_text(mod["html"])%>
<% end %>

其中 mod["html"] 是包含 rhtml 代码的变量,@mymods 是来自查询的对象数组。我目前不知道我应该使用什么功能(render_text 当然不起作用)。

非常感谢您的帮助。

/TZer0

最佳答案

您可以使用 ERB 对象来呈现文本,而文本不在文件中。
只需传递带有 <%= %> 的文本标签。您可以将类似以下内容作为 application_helper 函数。

def render_erb_text(text, args={})
b = binding
template = ERB.new(text, 0, "%<>")
template.result(b)
end

然后在你的模板中

<%=  render_erb_text("<%= %w(hi how are you).join(' - ') %>")%>

您还可以考虑在 Controller 中渲染文本,因为与在 View 评估期间相比,您可以在 Controller 中更好地处理任何渲染错误。

看看 ERB documentation有关变量绑定(bind)等的更多信息。

我不熟悉其幕后工作原理的细节,但在不良或恶意数据库数据上运行此代码可能存在一些严重风险。从用户输入或任何未经审查的来源评估 ruby​​ 代码,如果有的话,应该非常小心。

关于ruby-on-rails - 使用 erb 渲染一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2785757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com