2015-04-08 101 views
0

我正在使用careerfoundry's教程使用Sendgrid發送電子郵件與Heroku。我在頁面控制器中使用他們的用戶郵件的確切代碼和thank_you動作。這段代碼大部分工作。問題是,在主題行我收到我的收件箱是這樣的:Sendgrid電子郵件與Rails名稱

來自#{name}的

User_Mailer.rb

class UserMailer < ActionMailer::Base 
    default from: "[email protected]" 

    def contact_form(email, name, message) 
    @message = message 
    mail(:from => email, 
      :to => '[email protected]', 
      :subject => "A new contact form message from #{name}") 
    end 
end 

聯繫表

新聯繫人表單消息
<%= form_tag("/thank_you") do %> 
    <div class="row"> 
     <div class="col-md-4"> 
     <div class="input-group"> 
      <%= text_field_tag :name, nil, class: 'form-control', placeholder: 'Name' %> 
     </div> 
     </div> 
     <div class="col-md-8"> 
     <div class="input-group"> 
      <span class="input-group-addon" id="basic-addon1">@</span> 
      <%= text_field_tag :email, nil, class: 'form-control', placeholder: 'Email' %> 
     </div> 
     </div> 
    </div> 
    <br> 
    <div class="row"> 
     <div class="col-md-12"> 
     <div class="input-group text-area-wide"> 
      <%= text_area_tag :message, nil, class: 'form-control text-area-wide', placeholder: 'Message' %> 
     </div> 
     </div> 
    </div> 
    <br> 
    <%= submit_tag 'Send Message', class: 'btn btn-success' %> 
<% end %> 

頁控制器

def thank_you 
    @name = params[:name] 
    @email = params[:email] 
    @message = params[:message] || "Hello!" 
    # Only try to send this email on a POST 
    # if request.post? 
    # or make a feedback form controller and send in the create action 

    # ActionMailer::Base.mail(FOR TEST PURPOSES 
    #  :from => @email, 
    # :to => '[email protected]', 
    # :subject => "A new contact form message from #{@name}", 
    # :body => @message).deliver 
    UserMailer.contact_form(@email, @name, @message).deliver 

    end 

回答

1

速戰速決是隻拆分字符串由兩個部分組成,例如

class UserMailer < ActionMailer::Base 
    default from: "[email protected]" 

    def contact_form(email, name, message) 
    @message = message 
    mail(:from => email, 
      :to => '[email protected]', 
      :subject => "A new contact form message from " + name) <---- 
    end 
end 

這樣的符號是清晰的,它會避免了人工拼接問題。

經過查找一個快速的東西,它似乎也可能工作。根據我發現的幾個消息來源,內部顯然需要單引號。我不使用這種符號,所以讓我知道它是否有幫助!

:subject => "A new contact form message from '#{name}'") 
+0

這兩種方法你建議工作。第二個建議中的單引號是沒有必要的。顯然,雙引號是字符串插值工作所必需的。 –

+0

很好聽,我不得不記住這些。對我來說,開始使用這種符號對我來說不會有什麼壞處。 – cmw2379

相關問題