2010-09-15 10 views
11

मैं बस अपने रेल ऐप में नाम, ईमेल और संदेश फ़ील्ड के साथ एक संपर्क चाहता हूं, मैं संदेश को सहेजना नहीं चाहता (स्थायी रूप से) संदेश मैं सिर्फ एक ईमेल के रूप में संदेश भेजना चाहता हूं मेरा एक ईमेल खाता के लिए। क्या आप मेरी मदद कर सकते हैं?हमसे संपर्क करें रेल 3

धन्यवाद!

उत्तर

3

मैं एक काम कर प्रपत्र बना दिया और इसे बारे में भी ब्लॉग .. पाठ में पुर्तगाली है, लेकिन कोड में ही (अधिकतर) अंग्रेजी में http://www.rodrigoalvesvieira.com/formulario-contato-rails/

धन्यवाद है!

+0

टूटा लिंक। एक पृष्ठ पर रीडायरेक्ट एक फेलस का चित्र दिखाता है जो एसएफडब्लू (सुरक्षित कार्य के लिए) की परिभाषा नहीं है, जो एक ऐसा स्थान है जहां कोई शायद रेल संपर्क फ़ॉर्म के लिए खोज करेगा। Obrigado। –

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

+0

यह एक अच्छा उदाहरण है, बस एक विधि नाम के रूप में "भेजें" का उपयोग न करें क्योंकि यह एक आरक्षित कीवर्ड है। मॉडल रखने का कारण सत्यापन जोड़ना है, तो आप मॉडल को वैध के साथ जांचना चाहते हैं? आपके नियंत्रक में। –

7

मैंने एक रेल इंजन https://github.com/jdutil/contact_us लिखा है कि आप आसानी से किसी भी रेल 3+ एप्लिकेशन में जा सकते हैं। मैंने फॉर्म में नाम फ़ील्ड नहीं जोड़ा है, लेकिन आप रेपो को फोर्क कर सकते हैं और फिर अपनी आवश्यकताओं के अनुरूप इसे संशोधित कर सकते हैं। इसके लिए फॉर्मेटास्टिक मणि की आवश्यकता होती है क्योंकि मैं लोगों को मौजूदा रूप शैलियों में शामिल करने का एक आसान तरीका चाहता था।

स्थापित करने के लिए इंजन अपने Gemfile को CONTACT_US मणि जोड़ें:

gem 'contact_us', '~> 0.4.0' 

भागो बंडल और रेक कार्य स्थापित:

$ bundle 
$ bundle exec rake contact_us:install 

तो बस/config/initializers में उत्पन्न प्रारंभकर्ता संशोधित/contact_us.rb वह ईमेल प्राप्त करने के लिए जिसे आप फॉर्म सबमिशन भेजना चाहते हैं।

+0

वाह आदमी, बहुत अच्छा! – rodrigoalves

+0

@jDutil क्या हमें evironment config फ़ाइलों में SMTP सेटिंग्स जोड़ने की आवश्यकता है? – mrudult

+0

आपको अपने ईमेल वितरित करने के लिए अपना एक्शनमेलर सेट अप करना होगा, हालांकि आप ईमेल भेजना चाहते हैं। Contact_us मणि बस मेल भेजने की आपकी एप्लिकेशन विधि को कॉन्फ़िगर करने के लिए फ़ॉर्म और मेलर प्रदान करता है। – JDutil

संबंधित मुद्दे