2017-09-16 55 views
0

我是Rails的相對首發者,並且很好奇,如果有一種方法可以將網站的「聯繫人」頁面上的消息發送到取決於所選主題的特定電子郵件地址。我用簡單的表格,生成一種形式,這就是我有「聯繫」頁面上:如何根據主題獲取發送到特定電子郵件地址的郵件

<%= f.input :subject, collection: [:Curriculum, :Jobs, :Other], prompt: 'Subject', required: true, error: 'You must select one' %> 

在我contact.rb文件,我定義我的頭方法:

def headers 
    { 
     subject: "Contact Form", 
     to: "******.*******@gmail.com", 
     from: %("#{name}" <#{email}>) 
    } 
end 

這是我想要完成的:

1)用戶選擇'課程'。消息被髮送到,例如'[email protected]​​chool.org'。
2)用戶選擇'其他'。消息被髮送到,例如'[email protected]'。
3)用戶選擇'工作'。消息被髮送到,例如'[email protected]'。

任何幫助將不勝感激。

回答

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 %> 
+0

謝謝,馬克斯! – AshNaz87

相關問題