我正在構建一個Rails應用程序,並且想知道是否有簡化聯繫人窗體過程的方法。最初,我打算爲主頁創建一個聯繫表單,併爲'成爲合作伙伴'頁面提供聯繫表單。每個人都有自己的控制器和html電子郵件。然而,它讓我想知道是否有一種方法,只有一個聯繫人表單和控制器根據提交的頁面生成適當的html電子郵件?基本上,我希望客戶收到一封電子郵件,其中包含'主頁中的新郵件'或'成爲合作伙伴頁面的新郵件'。Rails:根據頁面來自哪個頁面,有沒有一種方法可以讓一個網站只生成一個不同的HTML電子郵件?
我確定有一種方法,但我很難解決這種關係。
感謝
感謝@cristiano您的答覆,真的很感激。我不認爲你可以爲我準備好嗎?此刻我正在做一些戰鬥。下面是我的文件:
contacts_controller.rb
class ContactsController < ApplicationController
def new
@contact = Contact.new
end
def create
@contact = Contact.new(contact_params)
if @contact.save
flash[:success] = "Message Sent!"
redirect_to new_contact_path
else
flash[:danger] = "Error occurred"
redirect_to new_contact_path
end
end
private
def contact_params
params.require(:contact).permit(:name, :phone, :email, :comments)
end
end
contact.rb
class Contact < ActiveRecord::Base
validates :name, presence: true
validates :email, presence: true
after_create :send_email
private
def send_email
ContactMailer.contact_email(self).deliver
end
end
contact_mailer.rb
class ContactMailer < ActionMailer::Base
default to: '[email protected]'
def contact_email(contact)
@contact = contact
mail(from: @contact.email, subject: 'Contact Form Message').deliver
end
end
contact_email.html.erb
<!DOCTYPE Html>
<html>
<head>
<title></title>
</head>
<body>
<p>New message from RuNpiXelruN's Contact Form!, from <%= "#{@contact.name}, #{@contact.email}" %></p>
</br>
<p><%= @contact.name %></p>
<p><%= @contact.phone %></p>
<p><%= @contact.comments %></p>
</body>
</html>
這將會是在接觸郵包的主題哪兒ID希望它從主頁或從合作伙伴註冊頁面等說
很抱歉,但再次感謝
賈斯汀
@cristiano_alencar感謝您的回覆克里斯蒂亞諾!我從來不知道這個請求....方法,其中有很多,這真的很有用。我已經閱讀了一些文檔,但只是想與你覈對一下,基本上我會在我的控制器中有一個條件,如果request.original_url = http:// ....然後發送這個html電子郵件,否則這是,是嗎? – RuNpiXelruN
如果您的電子郵件僅因郵件而異,則可以設置@message變量,以便將其傳遞給您的ActionMailer。如果你的電子郵件是完全不同的,那麼你應該使用不同的電子郵件來定義你的ActionMailer中的不同方法,這樣你就可以發送不同的電子郵件。 –
嗨@cristiano_alencar,請參閱我上面的修改。再次感謝。 – RuNpiXelruN