Rails ERB - 将生成的HTML内容添加到我可以在控制器中访问的变量中

时间:2012-10-17 22:07:05

标签: ruby-on-rails-3 render erb

我正在做一个在线合同协议,该协议是根据合同语言的当前状态动态生成的(存储在ERB部分中)。

当用户点击“我同意”时,我们保存变量数据,但我也想将所呈现的部分(html片段)的内容存储在数据库中。

我尝试使用ActionView::Helpers::CaptureHelper.capture - 将整个部分包装在一个块中并在最后渲染,例如

<% @saved_output = capture do %>
...
The rest of the erb with instance variable <%= @my_class.name %> and so on
...
<% end %>
<%= @saved_output %>
<% logger.debug "Rendered output is: #{@saved_output}" %>

这产生了相同的结果,并将正确的文本发送到日志。但它似乎超出了范围 - 即使我在结束块时在呈现@saved_output = nil之前声明nil

我也尝试使用content_for ......这对我来说很有意义,但是......嗯,只是没有得到它。任何有用的指示赞赏。

1 个答案:

答案 0 :(得分:3)

创建记录时,您是否在控制器中尝试过render_to_string?这可能允许您继续“快照”页面。