gpt4 book ai didi

ruby-on-rails - 通过在发送电子邮件时绑定(bind)包含实例变量的 erb 模板生成 PDF

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:30 24 4
gpt4 key购买 nike

在发送邮件时,我需要将邮件转换为pdf文档。

为此,我需要将 erb 模板与数据绑定(bind),但 erb 模板包含实例变量

让模板成为..,

<h1>Name: <%=@name%><h1>
<h2>Address: <%= @address %><h2>

我已经遵循了 question 中提到的这个解决方案, 使用命名空间将模板与数据绑定(bind)。

class Namespace
def initialize(hash)
hash.each do |key, value|
singleton_class.send(:define_method, key) { value }
end
end

def get_binding
binding
end
end

ns = Namespace.new(name: 'Joan', address: 'Chennai, India')
ERB.new(template).result(ns.get_binding)

这适用于不包含实例变量的模板。

我需要将数据传递给模板中的实例变量,是否有可能这样做。

而且我知道一种解决这个问题的方法,即通过为实例变量分配我们绑定(bind)的数据,即)

在模板中

   <% @name = name %> 
<% @address = address %>
<h1>Name: <%=@name%><h1>
<h2>Address: <%= @address %><h2>

但我想要这种实现方式。

最佳答案

我希望您渲染 HTML 字符串以生成一些 PDF 或某种文件。在那些情况下,我们需要从您调用这些调用的地方声明实例变量。这样就可以通过请求访问它。 (相同的邮件程序概念)

我针对这些情况尝试了以下方法。它有效。

  def generate_attachment(your_variable)
@your_instance_variable = your_variable

attachments['attachment.pdf'] = WickedPdf.new.pdf_from_string(render_to_string(:pdf => "filename.pdf",:template => '/_template.html.erb'))
end

关于ruby-on-rails - 通过在发送电子邮件时绑定(bind)包含实例变量的 erb 模板生成 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40150949/

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