2013-06-24 108 views
0

我使用gem mail从我的ruby应用程序发送电子邮件。Ruby On Rails,gem mail,将变量传递给html_part

def send_results(user_id,filenames) 


    @user=User.find(user_id)  

    mail=Mail.new do 
     from "lalal.de" 
     html_part do 
     body File.read("/home/kik/Desktop/lal/app/views/user_mailer/analysis_process_email.html.erb") 
     body 
     end 
    end 

“/home/kik/Desktop/lal/app/views/user_mailer/analysis_process_email.html.erb”是一个HTML模板,在这里我需要通过变量名。

它看起来是这样的:

<!DOCTYPE html> 
<html> 

    <body> 
     <div id="wrapper_mail"> 
      <div id="wrapper_mail_top"> 
       <h4>Welcome </h4> 
       <br /> 
       <p> 

       <br /> 

       <br /> 
       Your files are: <%= filenames %><br /> 
       <br /> 
        m 
       </p> 
      </div><!-- end wrapper_top --> 
lalala 

所以,我要显示在电子邮件中的变量名的内容,但它不工作,我不知道如何使它工作。 在此先感谢

+0

“不工作”怎么样?不应该发生什么?什么是'文件名'? –

+0

文件名是一个传递给send_results方法的变量。变量的内容可以是“group1”或“cat”。没关系。例如:filenames =“cat”,所以用户将收到一封电子邮件“Your files are:cat” – Tonja

回答

2

我有一些类似的问题。这里是我的设置是解决它:

def feedback_notice(message) 
    @sender = message.sender_id 
    @message = message.content 
    template = ERB.new(File.read('app/views/user_mailer/feedback_notice.text.erb')).result(binding) 

    mail = Mail.new do 
    from '[email protected]' 
    to  '[email protected]' 
    subject 'My Subject Line' 
    body  template 
    end 
    mail.deliver! 
end 

好像.result(binding)固定对我来说。

在文件app/views/user_mailer/feedback_notice.text.erb我能够访问的变量@sender@message

+0

“binding”来自哪里? – kittyminky

+1

@kittyminky'binding'是内核的一部分,并给出了要评估模板的上下文,所以我们可以用它的值替换正确的变量。查看[绑定文档](http://ruby-doc.org/core-2.1.4/Binding.html)了解更多信息。 – Hunter

0

可能,这将帮助你:

File.read( “/家/ KIK /桌面/ LAL /应用/视图/ user_mailer文件/ analysis_process_email.html.erb”)GSUB(” <%= filenames%>“,”cat“)。

谢谢。

相关问题