在Rails 3中联系我们表格

rod*_*ves 11 forms ruby-on-rails

我只想在我的Rails应用程序中使用姓名,电子邮件和消息字段联系我们表单,我不想保存(永久)我只想将消息作为电子邮件发送给我的电子邮件帐户的消息.你能帮助我吗?

谢谢!

Yan*_*nis 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
Run Code Online (Sandbox Code Playgroud)

邮编:

# /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
Run Code Online (Sandbox Code Playgroud)

和一个观点:

# /app/views/contact_us_mailer/sent.text.erb
Message sent by <%= @message.name %>
<%= @message.message %>
Run Code Online (Sandbox Code Playgroud)

我没有完全测试这段代码,但我只是想让你明白这个想法......

  • 为什么这是最好的方式?为什么要首先为它创建一个模型?为什么不将contact_us表单发布到控制器上的contact_us操作,然后触发邮件程序? (3认同)

JDu*_*til 7

我编写了一个Rails引擎https://github.com/jdutil/contact_us,您可以轻松地将其放入任何Rails 3+应用程序中.我没有在表单中添加Name字段,但是你可以分叉repo然后根据你的需要修改它.它确实需要Formtastic宝石,因为我想要一种简单的方法来勾勒出现有的各种形式.

要安装Engine,请将contact_us gem添加到Gemfile:

gem 'contact_us', '~> 0.4.0'
Run Code Online (Sandbox Code Playgroud)

运行bundle和install rake任务:

$ bundle
$ bundle exec rake contact_us:install
Run Code Online (Sandbox Code Playgroud)

然后只需修改/config/initializers/contact_us.rb中生成的初始化程序,即可获得要将表单提交发送到的电子邮件.


rod*_*ves 3

我制作了一个工作表格并在博客上介绍了它..文本是葡萄牙语的,但代码本身(大部分)是英语的http://www.rodrigoalvesvieira.com/formulario-contato-rails/

谢谢!