2012-06-30 4 views
1

Я не совсем уверен, что я делаю неправильно.Rails Контактный формуляр, Action_mailer не отправляет e-mail

Я вижу, что очень много людей имеют схожие проблемы: Rails contact form not working, Rails 3 Contact Form, undefined method?, Contact Us form in Rails 3 и т.д.

Даже жесткая я вижу, что очень многие считают это очень просто - построить контактную форму.
Been корыто популярных руководств ActionMailer: http://guides.rubyonrails.org/action_mailer_basics.html, http://railscasts.com/episodes/206-action-mailer-in-rails-3

Я на самом деле не разработчик, так что я нахожу это довольно запутанным.

В любом случае, мне нужно создать простую форму контакта, чтобы просто отправить сообщение в виде электронной почты для моей учетной записи электронной почты. Я не хочу хранить сообщения в своем db.

Вот мой код:

/app/models/message.rb

class Message 
    include ActiveModel::Validations 
    include ActiveModel::Conversion 
    extend ActiveModel::Naming 

    attr_accessor :name, :email, :content 


    def initialize(attributes = {}) 
    attributes.each do |name, value| 
    send("#{name}=", value) 
    end 
    end 

    def persisted? 
    false 
    end 
    end 

приложение \ Контроллеры \ messages_controller.rb

class MessagesController < ApplicationController 
    def new 
    @message = Message.new 
    end 

    def create 
    @message = Message.new(params[:message]) 
    MessageMailer.send(@message).deliver 
    flash[:notice] = "Message sent! Thank you for contacting us." 
    redirect_to root_url 
    end 
end 

/app/mailer/message_mailer.rb

class MessageMailer < ActionMailer::Base 
    default :to => "[email protected]" 

    def send(message) 
     @message = message 
     mail(:subject => " Test ", :from => @message.email) do |format| 
     format.text 
    end 
    end 
end 

Приложение/просмотров/сообщений/new.html.erb

<h1> "Contact Us" </h1> 

    <%= form_for @message do |f| %> 

    <p> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </p> 

    <p> 
    <%= f.label :email %><br /> 
    <%= f.text_field :email %> 
    </p> 

    <p> 
    <%= f.label :content, "Message" %><br /> 
    <%= f.text_area :content %> 
    </p> 
    <p><%= f.submit "Send Message" %></p> 
<% end %> 

приложение/просмотров/message_mailer/sent.text.erb

Message sent by <%= @message.name %> 

<%= @message.content %> 

и development.rb

N1::Application.configure do 

    # Don't care if the mailer can't send 
    config.action_mailer.perform_deliveries = true 
    config.action_mailer.raise_delivery_errors = true 

end 

Я не» t видеть ошибки в файле журнала, и я не получаю никаких сообщений об ошибках. Письмо просто не доставлено.

Можете ли вы рассказать мне, что я делаю неправильно?

Спасибо!

+0

Это похоже на: http://stackoverflow.com/questions/10991932/sending-confirmation-emails-to-registered-users-in-ror-app-via-localhost/10994387 –

ответ

0

Это немного старый, но, возможно, некоторые из концепций могут помочь вам ... это в значительной степени то, что вы пытаетесь сделать.

http://railscasts.com/episodes/193-tableless-model

Смежные вопросы