1

I was trying to work the Devise confirmable email, but now errors appear and it does not work (before the changes, it worked well).

If anyone can help me identify it, I'd appreciate it.

I just was trying: http://www.bogotobogo.com/RubyOnRails/RubyOnRails_Devise_Authentication_Sending_Confirmation_Email.php

NameError in Registrations#create

undefined local variable or method `root_path' for #<#:0xc0be918> Did you mean? font_path

In the view mark, after try register:

 <li><%= link_to "Start", root_path %></li>

In the route:

Rails.application.routes.draw do

   devise_for :usuarios, controllers: {registrations: 'registrations', omniauth_callbacks: "omniauth_callbacks"}

   root 'welcome#index'
   get "welcome/index"

   get ':controller(/:action(/:id))(.:format)'
   post ':controller(/:action(/:id))(.:format)'

end

also

app/views/devise/mailer/confirmation_instructions.html.erb:12:in `_app_views_devise_mailer_confirmation_instructions_html_erb___614633226_101093210'
app/controllers/registrations_controller.rb:6:in `create'

rake routes

                             Prefix Verb     URI Pattern                                Controller#Action
                new_usuario_session GET      /usuarios/sign_in(.:format)                devise/sessions#new
                    usuario_session POST     /usuarios/sign_in(.:format)                devise/sessions#create
            destroy_usuario_session DELETE   /usuarios/sign_out(.:format)               devise/sessions#destroy
                   usuario_password POST     /usuarios/password(.:format)               devise/passwords#create
               new_usuario_password GET      /usuarios/password/new(.:format)           devise/passwords#new
              edit_usuario_password GET      /usuarios/password/edit(.:format)          devise/passwords#edit
                                    PATCH    /usuarios/password(.:format)               devise/passwords#update
                                    PUT      /usuarios/password(.:format)               devise/passwords#update
        cancel_usuario_registration GET      /usuarios/cancel(.:format)                 registrations#cancel
               usuario_registration POST     /usuarios(.:format)                        registrations#create
           new_usuario_registration GET      /usuarios/sign_up(.:format)                registrations#new
          edit_usuario_registration GET      /usuarios/edit(.:format)                   registrations#edit
                                    PATCH    /usuarios(.:format)                        registrations#update
                                    PUT      /usuarios(.:format)                        registrations#update
                                    DELETE   /usuarios(.:format)                        registrations#destroy
               usuario_confirmation POST     /usuarios/confirmation(.:format)           devise/confirmations#create
           new_usuario_confirmation GET      /usuarios/confirmation/new(.:format)       devise/confirmations#new
                                    GET      /usuarios/confirmation(.:format)           devise/confirmations#show
usuario_facebook_omniauth_authorize GET|POST /usuarios/auth/facebook(.:format)          omniauth_callbacks#passthru
 usuario_facebook_omniauth_callback GET|POST /usuarios/auth/facebook/callback(.:format) omniauth_callbacks#facebook
                               root GET      /                                          welcome#index
                      welcome_index GET      /welcome/index(.:format)                   welcome#index
                                    GET      /:controller(/:action(/:id))(.:format)     :controller#:action
                                    POST     /:controller(/:action(/:id))(.:format)     :controller#:action

Enviroment:

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
  config.action_mailer.perform_deliveries = true

  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    user_name:      ENV['uclave.cdcht'],
    password:       ENV[''],
    domain:         ENV['gmail'],
    address:       'smtp.gmail.com',
    port:          '587',
    authentication: :plain,
    enable_starttls_auto: true
  }

users = usuarios (spanish)

Alekx Yánez
  • 21
  • 1
  • 5

2 Answers2

3

The error happens in your mailer. You can't use _path helpers in Mailers (since it would generate a URL like "/", which is not useful when clicked in mails).

Instead, you have to use the _url helpers. Changing your mailer to use root_url should be enough, assuming you have set config.action_mailer.default_url_options = { host: 'example.com' } (should be in config/application.rb).

Nils Landt
  • 3,104
  • 18
  • 18
1

A similar error was experienced by me. But in my case I had mistakenly commented out

    #root 'welcome#index'

On un-commenting things returned to normal.

    root 'welcome#index' 
Hussain Niazi
  • 579
  • 1
  • 3
  • 21