2017-09-16 15 views
0

私はRailsとの相対的な出発点です。ウェブサイトの[連絡先]ページにメッセージを送信できる方法がある場合は興味があります特定の電子メールアドレスは、選択された主題に依存します。私は、フォームを生成するための簡単なフォームを使用していますし、これは私が「コンタクト」のページに持っているものです:私のcontact.rbファイルで件名に基づいて特定のメールアドレスにメッセージを送信する方法

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

、私のように私のヘッダー方式を定義している:

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

これは私が達成したいことです:

1)ユーザーは「カリキュラム」を選択します。メッセージは、に送信されます。 '[email protected]​​chool.org'
2)ユーザーは「その他」を選択します。メッセージは、に送信されます。 '[email protected]'。
3)ユーザーが「ジョブ」を選択します。メッセージは、に送信されます。 '[email protected]'。

ご協力いただければ幸いです。 1対多の関連を持つ2つのモデルを設定して

答えて

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

関連する問題