2015-12-23 6 views
0

Я относительно новичок в программировании Ruby on Rails, и я получил эту ошибку при попытке использовать почтовый камень mail_form. The error is in the create function as can be seenНеопределенный метод true для (класса) mail_form gem

Я думаю, что я получил все настройки правильный путь:

Моя модель выглядит так:

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

Я не знаю, если вопросы, которые я пытаюсь создать сайт с только одна страница, поэтому у меня есть форма, чтобы создать новый контакт в welcome.html.erb контроллера страниц, но я определяю контакт:

def welcome 
    @admin = Admin.find(1) 
    @projects = Project.all.order('created_at DESC') 
    @contact = Contact.new 
end 

Al поэтому я думаю, что важно, что функция create (то есть ошибка) находится в контроллере контактов, я не знаю, было ли это нормально или будет лучше на том же контроллере, что и Contact.new (в приветствии функция страниц):

def create 
    @contact = Contact.new(params[:contact]) 
    @contact.request = request 
    if @contact.deliver 
     redirect_to(root_path, :notice => "Thank you for contacting me. I will reply shortly!") 
    else 
     flash.now[:error] = 'Cannot send message.' 
    end 
end 

Я не тестировал в производстве еще только в разработке, возможно, это произойдет не в производстве, но я хочу знать, почему это происходит со мной, потому что я после tutorial из Mackenzie Child, и этого не случилось с ним, и у нас есть тот же код (за исключением того, что я пытаюсь сделать это только в одном представлении). Я не знаю, если это поможет, но это то, что у меня есть в моей конфигурации/сред/development.rb:

config.action_mailer.delivery_method = :letter_opener 

Таким образом, в развитии Я использую гем letter_opener для отображения сообщений вместо отправки почты , хотя это не влияет на ошибку в ошибке, потому что ошибка появляется до того, как я установил драгоценный камень.

Я искал во многих местах и ​​во всех вопросах переполнения стека, но ничего не нашел. Если ты поможешь мне, это будет решетка.

Спасибо.

EDIT:. я испытал в производстве с Heroku и возвращает ту же ошибку :(

ответ

0

Ok, Я спросил странице GitHub драгоценного камня, и я мог бы решить эту проблему Это было то, что в проверке из атрибутов на модели Contact I я объявлял :true как объект, когда он должен быть только логическим true (без двоеточия раньше). Полезно знать, чтобы избежать глупых ошибок.

Смежные вопросы