我只想在我的Rails应用程序中联系我们表格,其中包含姓名,电子邮件和消息字段,我不想保存(永久)消息我只想将消息作为电子邮件发送给我的电子邮件帐户。你能救我吗?
谢谢!
答案 0 :(得分:15)
在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 => "your@address.com"
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 %>
我没有完全测试这段代码,但我只是想让你明白这个想法......
答案 1 :(得分:7)
我编写了一个Rails引擎https://github.com/jdutil/contact_us,您可以轻松地将其放入任何Rails 3+应用程序中。我没有在表单中添加Name字段,但是你可以分叉repo然后根据你的需要修改它。它确实需要Formtastic宝石,因为我想要一种简单的方法来吸引人们现有的表单风格。
要安装Engine,请将contact_us gem添加到您的Gemfile:
gem 'contact_us', '~> 0.4.0'
运行bundle和install rake任务:
$ bundle
$ bundle exec rake contact_us:install
然后只需修改/config/initializers/contact_us.rb中生成的初始化程序,即可获得要将表单提交发送到的电子邮件。
答案 2 :(得分:3)
我制作了一份工作表格并在博客上发表了这篇文章。该文本是葡萄牙文,但代码本身(大部分)是英文http://www.rodrigoalvesvieira.com/formulario-contato-rails/
谢谢!