2016-03-03 3 views
1

Я получаю всегда ту же ошибку, когда я пытаюсь зарегистрировать нового пользователя в своем приложении Rails - я использую Devise для регистрации, CanCanCan и Sendgrid для отправки почты уведомления на новом пользователе Эл. адрес.Devise Sendgrid & Cancancan: NameError в UserRegistrations # create

Новый пользователь может подписаться, но затем появляется ошибка:

NameError in UserRegistrations#create 

Showing C:/Users/Adsidera/FreshObst/app/views/user_mailer/welcome.html.erb where line #4 raised: 

    undefined local variable or method `user' for #<#<Class:0x5777fb8>:0x5bdac78> 

Rails.root: C:/Users/Adsidera/FreshObst 
Application Trace | Framework Trace | Full Trace 

app/views/user_mailer/welcome.html.erb:4:in `_app_views_user_mailer_welcome_html_erb__1004447735_47859732' 
app/mailers/user_mailer.rb:14:in `welcome' 
app/controllers/user_registrations_controller.rb:7:in `create' 

Это user_registrations_controller.rb

class UserRegistrationsController < Devise::RegistrationsController 
before_filter :configure_permitted_parameters 

def create 
    super 
    if @user.persisted? 
     UserMailer.welcome(@user).deliver_now 
    end 
end 


protected 

# my custom fields are :name, :heard_how 
def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) do |u| 
    u.permit(:first_name, :last_name, 
    :email, :password, :password_confirmation) 
end 

devise_parameter_sanitizer.for(:account_update) do |u| 
    u.permit(:first_name, 
    :email, :password, :password_confirmation, :current_password) 
    end 
end 
end 

И это user_mailer.rb

class UserMailer < ApplicationMailer 
default from: "[email protected]" 

    def contact_form(email, name, message) 
     @message = message 
     mail(:from => email, 
      :to => '[email protected]', 
      :subject => 'A new contact form message from #{name}' 
      ) 
    end 

    def welcome(user) 
     @appname = "FreshObst" 
     mail(:to => user.email, 
     :subject => "Welcome to #{@appname}!") 
    end 
end 

Это ссылка на мой github, а также https://github.com/Adsidera/FreshObst

Спасибо! Я получаю орехи над этим ... Anna

UPDATE!

После посоветуйте Иллюзионист, проблема кажется наполовину решена, теперь у меня есть этот журнал:

UserMailer#welcome: processed outbound mail in 83.0ms 

Sent mail to [email protected] (638.0ms) 
Date: Fri, 04 Mar 2016 13:38:21 +0100 
From: [email protected] 
To: [email protected] 
Message-ID: <[email protected]> 
Subject: Welcome to FreshObst! 
Mime-Version: 1.0 
Content-Type: text/html; 
charset=UTF-8 
Content-Transfer-Encoding: 7bit 
X-SMTPAPI: {"to":[ "[email protected]" ]} 

<html> 
    <body> 
    <table> 
     <tbody> 
      <tr> 
      <td><h2>Welcome Mike!</h2></td> 
      </tr><br> 
      <tr><td><p>Thank you for signing up with FreshObst</p></td> 
      </tr> 
      <tr><td><p>We wish you a fruity and healthy shopping by us ;) </p></td> 
      </tr> 
      <tr> <td><p><strong>Your FreshObst Team!</strong></p></td> 
      </tr><br><br> 
      <tr><td><p><small>This is an automated message. Please do not reply to this mail</small></p></td> 
      </tr> 

     </tbody> 
     </table> 
    </body> 
</html> 

Completed 500 Internal Server Error in 1048ms (ActiveRecord: 86.0ms) 

    Net::SMTPFatalError (550 Unauthenticated senders not allowed 
    ): 
     app/controllers/user_registrations_controller.rb:7:in `create' 


Rendered C:/row/Ruby200/lib/ruby/gems/2.0.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/templates/rescues/_source.erb (2.0ms) 
    Rendered C:/row/Ruby200/lib/ruby/gems/2.0.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (5.0ms) 
    Rendered C:/row/Ruby200/lib/ruby/gems/2.0.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.0ms) 
    Rendered C:/row/Ruby200/lib/ruby/gems/2.0.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (75.0ms) 
    Rendered C:/row/Ruby200/lib/ruby/gems/2.0.0/gems/web-console-2.2.1/lib/web_console/templates/_markup.html.erb (1.0ms) 
    Rendered C:/row/Ruby200/lib/ruby/gems/2.0.0/gems/web-console-2.2.1/lib/web_console/templates/_inner_console_markup.html.erb within layouts/inlined_string (1.0ms) 
    Rendered C:/row/Ruby200/lib/ruby/gems/2.0.0/gems/web-console-2.2.1/lib/web_console/templates/_prompt_box_markup.html.erb within layouts/inlined_string (1.0ms) 
    Rendered C:/row/Ruby200/lib/ruby/gems/2.0.0/gems/web-console-2.2.1/lib/web_console/templates/style.css.erb within layouts/inlined_string (2.0ms) 
Rendered C:/row/Ruby200/lib/ruby/gems/2.0.0/gems/web-console-2.2.1/lib/web_console/templates/console.js.erb within layouts/javascript (133.0ms) 
Rendered C:/row/Ruby200/lib/ruby/gems/2.0.0/gems/web-console-2.2.1/lib/web_console/templates/main.js.erb within layouts/javascript (1.0ms) 
Rendered C:/row/Ruby200/lib/ruby/gems/2.0.0/gems/web-console-2.2.1/lib/web_console/templates/error_page.js.erb within layouts/javascript (0.0ms) 
Rendered C:/row/Ruby200/lib/ruby/gems/2.0.0/gems/web-console-2.2.1/lib/web_console/templates/index.html.erb (224.0ms) 

РЕШЕНИЕ последней ошибки: Это последняя ошибка, хотя, казалось, быть вызвано Yahoo. адрес электронной почты com, который я выбрал по умолчанию, как из моих журналов SendGrid: «550 5.7.1 Неавторизованная электронная почта с yahoo.com не принимается из-за политики домена DMARC. Пожалуйста, свяжитесь с администратором домена yahoo.com, если это была законная почта. посетите https://support.google.com/mail/answer/2451690, чтобы узнать об инициативе DMARC ».

Изменение этого адреса почты по умолчанию на почтовом адресе, отличном от yahoo, решило проблему. Спасибо вам всем!

+0

у вас есть обновленный проект github? если нет, пожалуйста, нажмите свой последний код на какой-либо филиал в github, чтобы мы могли просмотреть – illusionist

+0

. Я обновил его снова, если вы хотите снова проверить :) –

ответ

1

попробовать этот

# in app/views/user_mailer/welcome.html.erb 
<td><h2>Welcome <%= @user.first_name %>!</h2></td> 

и

# in app/mailers/user_mailer.rb 
def welcome(user) 
    @user = user 
    @appname = "FreshObst" 
    mail(:to => @user.email, 
     :subject => "Welcome to #{@appname}!") 
end 
+1

Дорогой иллюзионист, похоже, что это правильное направление! Теперь почта отправляется, как я вижу из журнала, но я приземляюсь на другую ошибку «550 не прошедших проверку подлинности отправителей не допускается» –

1

РЕШЕНИЕ ПОСЛЕДНЕЙ ОШИБКА: Это последняя ошибка, хотя, казалось, вызвана yahoo.com почты я выбрал по умолчанию, так как из мои журналы SendGrid: «550 5.7.1 Неавторизованная электронная почта с yahoo.com не принимается из-за политики домена DMARC. Обратитесь к администратору домена yahoo.com, если это была законная почта. Посетите https://support.google.com/mail/answer/2451690, чтобы узнать о инициативе DMARC ».

Изменение этого адреса почты по умолчанию на почтовом адресе, отличном от yahoo, решило проблему.

+0

отлично, спасибо за сообщение – illusionist

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