我是Rails的相对先发者,如果有一种方式可以在“联系人”上发送消息,我很好奇。根据所选主题,可以将网站页面发送到特定的电子邮件地址。我使用简单表单生成表单,这就是我在'联系人'页:
<%= f.input :subject, collection: [:Curriculum, :Jobs, :Other], prompt: 'Subject', required: true, error: 'You must select one' %>
在我的contact.rb文件中,我将header方法定义为:
def headers
{
subject: "Contact Form",
to: "******.*******@gmail.com",
from: %("#{name}" <#{email}>)
}
end
这就是我想要完成的事情:
1)用户选择&#39; Curriculum&#39;。消息被发送到例如&#39; headteacher@school.org' ;.
2)用户选择&#39;其他&#39;。消息被发送到例如&#39; info@school.org' ;.
3)用户选择&#39;工作&#39;。消息被发送到例如&#39; hr@school.org'
非常感谢任何帮助。
答案 0 :(得分:0)
首先设置两个具有一对多关联的模型:
class Inquiry < ApplicationRecord
belongs_to :subject
end
class Subject < ApplicationRecord
has_many :inquiries
end
虽然您可以使用硬编码哈希,但是使用数据库中的行的yaml文件或其他解决方案会将应用程序逻辑与特定的实现细节分离。在数据库中存储查询记录还可以帮助您抵御电子邮件故障。
让我们设置一个路径控制器并查看查询:
resources :inquiries, only: [:new, :create]
class InquiriesController
def new
@inquiry = Inquiry.new
end
def create
@inquiry = Inquiry.new(inquiry_params)
if @inquiry.save
# This is just an example showing how you would get the data:
send_mail(
to: @inquiry.subject.email
subject: @inquiry.subject.title
body: @inquiry.message
)
else
render :new
end
end
def inquiry_params
params.require(:inquiry).permit(:email, :name ,:message, :subject_id)
end
end
<%= form_for(@inquiry) do |f| %>
# ...
<div class="field">
<%= f.label :subject_id, 'Subject' %>
<%= f.collection_select(:subject_id, Subject.all, :id, :name, prompt: true) %>
</div>
<%= f.submit 'Send' %>
<% end %>