2010-09-15 59 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