Неопределенная локальная переменная или метод `email'для Контакта: Класс

Я хотел бы использовать ruby mail_form и Heroku Sendgrid, чтобы пользователи могли отправлять мне электронные письма. Я установил следующий класс контактов в apps / models / contact.rb

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      => "example@email.com",
   :from    => %("#{name}" <#{email}>)
 } 
 end
end

Однако, когда я захожу на страницу, где я настроил свою форму, я получаю следующее сообщение об ошибке:

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

Комментирование атрибута email, определенного в моем классе Contact, приводит к аналогичным ошибкам в последующих атрибутах message: и псевдоним:

Ниже мой контроллер контактов, 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 

и моя форма, 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>

Любая помощь или предложения будут с благодарностью!

1 ответ

Решение

Вы пропустили двойные кавычки в from вариант.

 def headers 
 {
   :subject => "Contact Form",
   :to      => "example@email.com",
   :from    => %("#{name}" <#{email}>)
 } 
 end
Другие вопросы по тегам