我正在做一个在线合同协议,该协议是根据合同语言的当前状态动态生成的(存储在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
......这对我来说很有意义,但是......嗯,只是没有得到它。任何有用的指示赞赏。
答案 0 :(得分:3)
创建记录时,您是否在控制器中尝试过render_to_string
?这可能允许您继续“快照”页面。