2016-08-27 2 views
0

Je voudrais utiliser ruby ​​mail_form et Heroku Sendgrid pour permettre aux utilisateurs de m'envoyer un email. Je l'ai mis en place la classe suivante de contact dans apps/modèles/contact.rbvariable locale non définie ou la méthode `email 'pour Contact: Classe

class Contact < MailForm::Base 

attribute name, :validate => true 
attribute email, :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i 
attribute message, :validate => true 
attribute nickname,:captcha => true 

def headers 
{ 
    :subject => "Contact Form", 
    :to  => "[email protected]", 
    :from => %("#{name}" <#{email}>) 
} 
end 
end 

Cependant, quand je visite la page où je l'ai mis en place ma forme, je reçois le message d'erreur suivant:

undefined local variable or method `email' for Contact:Class 

Commentant l'attribut mail défini dans ma classe de contact produit des erreurs similaires dans les attributs suivants messages: et surnom:

ci-dessous est mon contrôleur Contacts, contacts_controller.rb

class ContactsController < ApplicationController 

def new 
    @contact = Contact.new 
end 

def create 
    @contact = Contact.new(params[:contact]) 
    @contact.request = request 
    if @contact.deliver 
    flash.now[:error] = nil 
    else 
    flash.now[:error] = "Oops! There was an error." 
    render :new 
    end 
end 

end 

et ma forme, new.html.erb

<% provide(:title, "Contact") %> 
<h1>Contact</h1> 
<%= form_for @contact do |f| %> 
<%= f.label :name %><br> 
<%= f.text_field :name, required: true %> 

<br> 

<%= f.label :email %><br> 
<%= f.text_field :email, required: true %> 

<br> 

<%= f.label :message %><br> 
<%= f.text_area :message, as: :text %> 

<div class="hidden"> 
<%= f.label :nickname %><br> 
<%= f.text_field :nickname, hint: "Leave this field blank." %> 
</div> 

<%= f.submit "Send Message", class: "btn" %> 
<% end %> 
<ul class="pager"> 
<li><a href="<%= blog_path %>">Previous</a></li> 
</ul> 

Toute aide ou suggestion serait grandement appréciée!

Répondre

0

Vous avez omis les guillemets doubles dans l'option from.

def headers 
{ 
    :subject => "Contact Form", 
    :to  => "[email protected]", 
    :from => %("#{name}" <#{email}>) 
} 
end