TZe*_*er0 3 ruby variables ruby-on-rails erb rhtml
我有以下问题:我有一个存储在我想渲染的数据库中的rhtml(与<%%>和<%=%>标记内的ruby一起拼成的html).通过查询获取信息.我需要能够评估从数据库中获取的信息,就好像它是.erb文件中的正常内容一样.我目前拥有的:
<% @mymods.each do |mod| %>
<%= render_text(mod["html"])%>
<% end %>
Run Code Online (Sandbox Code Playgroud)
其中mod ["html"]是包含rhtml代码的变量,而@mymods是来自查询的对象数组.我目前不知道我应该使用什么功能(render_text当然不起作用).
非常感谢帮助.
/ TZer0
dan*_*ich 11
您可以使用ERB对象呈现文本,而文本不在文件中.
只需使用<%= %>
标签传递文本即可.您可以将以下内容作为application_helper函数.
def render_erb_text(text, args={})
b = binding
template = ERB.new(text, 0, "%<>")
template.result(b)
end
Run Code Online (Sandbox Code Playgroud)
然后在你的模板中
<%= render_erb_text("<%= %w(hi how are you).join(' - ') %>")%>
Run Code Online (Sandbox Code Playgroud)
您可能还会考虑在控制器中渲染文本,因为您可以比在视图评估期间更好地处理任何渲染错误.
有关变量绑定等的更多信息,请查看ERB文档.
我不熟悉其工作原理的细节,但在恶意或恶意数据库数据上运行此代码可能会有一些严重的风险.如果有的话,应该非常仔细地评估来自用户输入或任何未经审查的源的ruby代码.
归档时间: |
|
查看次数: |
2535 次 |
最近记录: |