Форма обратной связи в Rails 3

Я просто хочу получить контактную форму с полями имени, электронной почты и сообщений в приложении Rails, я не хочу сохранять (навсегда) сообщение, которое я просто хочу отправить в виде сообщения электронной почты для учетной записи электронной почты моего, Можете ли вы мне помочь?

Спасибо!

Ответ 1

Я создал рабочую форму и написал об этом в блоге. текст находится на португальском языке, но сам код (в основном) на английском http://www.rodrigoalvesvieira.com/formulario-contato-rails/

Спасибо!

Ответ 2

В Rails3 вы можете создать модель ActiveModel:

# /app/models/contact_us.rb
class ContactUs

  include ActiveModel::Validations
  include ActiveModel::Conversion
  extend ActiveModel::Naming

  attr_accessor :name, :email, :message

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

  def persisted?
    false
  end
end

то почтовая программа:

# /app/mailer/contact_us_mailer.rb
class ContactUsMailer < ActionMailer::Base

  default :to => "[email protected]"

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

и вид:

# /app/views/contact_us_mailer/sent.text.erb
Message sent by <%= @message.name %>
<%= @message.message %>

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

Ответ 3

Я написал Rails Engine https://github.com/jdutil/contact_us, который можно легко добавить в любое приложение Rails 3+. Я не добавил поле "Имя" в форму, но вы можете разветкить репо и изменить его в соответствии с вашими потребностями. Для этого требуется камень Formtastic, так как я хотел бы легко подключиться к существующим стилям стилей людей.

Чтобы установить движок, добавьте в свой Gemfile файл contact_us:

gem 'contact_us', '~> 0.4.0'

Запустите пакет и задачу установки грабли:

$ bundle
$ bundle exec rake contact_us:install

Затем просто измените сгенерированный инициализатор в /config/initializers/contact _us.rb, чтобы получить электронное письмо, на которое вы отправляете отправленные формы.