2010-09-15 17 views
11

Po prostu chcę skontaktować się z nami formularz z nazwami, adres e-mail i pola wiadomości w mojej aplikacji Rails, nie chcę zapisać (na stałe) wiadomość, którą chcę wysłać wiadomość jako e-mail dla mojego konta e-mail. Możesz mi pomóc?Formularz kontaktowy w Rails 3

Dzięki!

Odpowiedz

3

Zrobiłem formularz roboczy i napisał o nim .. tekst jest w języku portugalskim, ale sam kod jest (w większości) w języku angielskim http://www.rodrigoalvesvieira.com/formulario-contato-rails/

Dzięki!

+0

Złamany link. Przekierowania na stronę pokazują także rysunek fallusa, który nie jest definicją SFW (Safe For Work), czyli miejsca, w którym ktoś prawdopodobnie szukałby formularza kontaktowego z szynami. Obrigado. –

15

W Rails3, można utworzyć model 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 

następnie Mailer:

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

i widok:

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

nie testowałem ten kod Dokładnie, ale chcę tylko, żebyś wpadł na pomysł ...

+3

Dlaczego to najlepszy sposób? Po co tworzyć model? Dlaczego po prostu nie ma postu contact_us do działania contact_us na kontrolerze, który uruchamia program pocztowy? – AdamT

+0

To jest dobry przykład, po prostu nie używaj "wyślij" jako nazwy metody, ponieważ jest zastrzeżonym słowem kluczowym. Powodem posiadania modelu jest dodanie sprawdzania poprawności, więc chcesz sprawdzić model z poprawną? w twoim kontrolerze. –

7

Napisałem silnik Railsowy https://github.com/jdutil/contact_us, który można łatwo wpaść do dowolnej aplikacji Rails 3+. Nie dodałem pola Nazwa do formularza, ale można je rozdzielić, a następnie zmodyfikować zgodnie z własnymi potrzebami. To wymaga klejnotu Formtastic, ponieważ chciałem w łatwy sposób podłączyć się do istniejących już stylów formularzy.

Aby zainstalować Silnik dodać gem contact_us do Gemfile:

gem 'contact_us', '~> 0.4.0' 

Uruchom pakiet i zainstalować zadanie Zgrabiarka:

$ bundle 
$ bundle exec rake contact_us:install 

Następnie wystarczy zmodyfikować wygenerowany inicjatora w/config/inicjalizatorów/contact_us.rb, aby otrzymać wiadomość e-mail, do której chcesz przesłać formularz.

+0

Wow man, very nice! – rodrigoalves

+0

@jDutil czy musimy dodać ustawienia SMTP w plikach konfiguracyjnych evironment? – mrudult

+0

Konieczne będzie skonfigurowanie ActionMailer'a w celu dostarczania wiadomości e-mail, ale chcesz, aby wiadomości były wysyłane. Klejnot contact_us po prostu dostarcza formularz i mailer do ciebie, aby skonfigurować metodę wysyłania poczty. – JDutil