2010-09-15 110 views
11

我只想在我的Rails应用程序中联系我们的名称,电子邮件和消息字段,我不想保存(永久)我只想将邮件作为电子邮件发送为我的电子邮件帐户。你可以帮我吗?联系我们在Rails中的表格3

谢谢!

回答

3

我做了一个工作形式,并在博客吧..文字是葡萄牙语,但代码本身(大部分)在英语http://www.rodrigoalvesvieira.com/formulario-contato-rails/

谢谢!

+0

断开的链接。也重定向到一个页面显示一个阴茎的绘图,这不是SFW(安全工作)的定义,这是一个人最有可能寻找铁轨联系表格的地方。 Obrigado。 – 2017-12-01 12:01:22

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 => "[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

为什么这是最好的方式?为什么要为它创建一个模型?为什么不把contact_us表单发布到控制器上的contact_us动作,然后触发邮件程序? – AdamT 2012-08-31 04:16:49

+0

这是一个很好的例子,只是不要使用“发送”作为方法名称,因为它是一个保留关键字。有一个模型的原因是添加验证,所以你想要检查有效的模型?在你的控制器中。 – 2014-02-17 01:37:50

7

我已经写了一个Rails Engine https://github.com/jdutil/contact_us,你可以很容易地放入任何Rails 3+应用程序。我没有为表单添加名称字段,但是您可以分叉回购,然后修改它以满足您的需求。它确实需要Formtastic gem,因为我想要一个简单的方法来钩入人们现有的表单样式。

要安装发动机CONTACT_US宝石添加到您的Gemfile:

gem 'contact_us', '~> 0.4.0' 

运行包和安装rake任务:

$ bundle 
$ bundle exec rake contact_us:install 

然后,只需修改生成初始化中/配置/初始化/ contact_us.rb将您要发送的表单提交给您的电子邮件。

+0

哇,真好! – rodrigoalves 2011-07-25 17:29:42

+0

@jDutil我们是否需要在环境配置文件中添加SMTP设置? – mrudult 2013-10-05 05:06:17

+0

您需要设置您的ActionMailer来发送您的电子邮件,但是您希望发送电子邮件。 contact_us gem只是简单地提供表单和邮件信息,由您来配置您的应用程序发送邮件的方法。 – JDutil 2013-10-26 06:25:29