2016-08-30 7 views
1

私はMailForm gemを使って簡単な電子メールフォームを設定しようとしていますが、それは機能していないし、メッセージを出すことさえできません。ここRails MailForm gem not working

は私のコントローラメソッド

class ContactsController < ApplicationController 
def new 
    @contact = Contact.new 
    end 

    def create 
    @contact = Contact.new(params[:contact]) 
    @contact.request = request 
    if @contact.deliver 
     flash.now[:notice] = "Thanks! I'll contact you soon." 
    else 
     flash.now[:error] = 'Cannot send message.' 
     render :new 
    end 
    end 

    private 

    def contact_params 
    params.require(:contact).permit(:from_email, :from_name, :subject, :message) 
    end 
end 

だと、代わりにcontact/newページのprofiles/showページに実際にあるビューは、(。問題ということですか?

<%= form_for @contact do |f| %> 
      <div class="form-group"> 
       <%= f.label "Your Email" %> 
       <%= f.text_field :from_email, class: "form-control" %> 
      </div> 
      <div class="form-group"> 
       <%= f.label "Subject" %> 
       <%= f.text_field :subject, class: "form-control" %> 
      </div> 
      <div class="form-group"> 
       <%= f.label "Message" %> 
       <%= f.text_area :message, class: "form-control" %> 
      </div> 
      <div class="form-group"> 
       <%= f.hidden_field :to_email, value: @user.email %> 
       <%= f.submit "Contact", class: 'btn btn-primary form-control' %> 
      </div> 
      <% end %> 

私もそれができると思います設定に問題があります。私が使用している設定は次のとおりです。gmail

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } 
    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
    address:    'smtp.gmail.com', 
    port:     587, 
    domain:    'gmail.com', 
    user_name:   '<email>', 
    password:    '<password>', 
    authentication:  'plain', 
    enable_starttls_auto: true } 

そして、ここでは、私は、スタックオーバーフローの上に見つけることができるちょうど約すべての答えをしようとしたモデル

class Contact < MailForm::Base 
    # belongs_to :user 
    attribute :to_email 
    attribute :name,  :validate => true 
    attribute :from_email,  :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i 
    attribute :subject 
    attribute :message 

    def headers 
    { 
     subject: subject, 
     to: to_email, 
     from: <email> 
    } 
    end 


end 

だが、何も作業していないです。私はここで間違って何をしていますか?

+0

はあなたが私は質問を更新し@TanNguyenNhatこのhttps://github.com/plataformatec/mail_form#description – Nathan

+0

のように私にあなたのフォームを表示することができますあなたがto_emailを可能にするために、忘れてしまったと思います申し訳ありません –

+0

私はとても長い時間がかかった、私は町から出ていた:p –

答えて

0

は私がcontact_params

def contact_params 
    params.require(:contact).permit(:from_email, :from_name, :subject, :message, :to_email) 
end 
+0

うわー私は馬鹿のように感じる、ありがとう! –

+0

私はうまく働いた! – Nathan