Contact Us form in Rails 3

后端 未结 3 385
长情又很酷
长情又很酷 2020-12-28 10:00

I simply want a contact us form with name, email and message fields in my Rails app, I don\'t want to save(permanently) the message I just want to send the message as an ema

相关标签:
3条回答
  • 2020-12-28 10:02

    I made a working form and blogged about it.. the text is in portuguese but the code itself is (mostly) in english http://www.rodrigoalvesvieira.com/formulario-contato-rails/

    Thanks!

    0 讨论(0)
  • 2020-12-28 10:05

    I've written a Rails Engine https://github.com/jdutil/contact_us that you can easily drop into any Rails 3+ application. I didn't add a Name field to the form, but you could fork the repo then modify it to suit your needs. It does require the Formtastic gem since I wanted an easy way to hook into peoples existing form styles though.

    To install the Engine add the contact_us gem to your Gemfile:

    gem 'contact_us', '~> 0.4.0'
    

    Run bundle and the install rake task:

    $ bundle
    $ bundle exec rake contact_us:install
    

    Then just modify the generated initializer in /config/initializers/contact_us.rb to have the email you want the form submissions sent to.

    0 讨论(0)
  • 2020-12-28 10:25

    In Rails3, you can create an ActiveModel model:

    # /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
    

    then a mailer:

    # /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
    

    and a view:

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

    I didn't test this code exactly, but I just want to let you get the idea…

    0 讨论(0)
提交回复
热议问题