Почтовик не будет отправлять электронную почту из-за возможных несоответствующих ограничений: [: id] - PullRequest
0 голосов
/ 22 сентября 2019

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

Журналы показывают:

ActionView::Template::Error: No route matches {:action=>"edit", :controller=>"account_activation", :email=>"example@gmail.com", :id=>nil}, possible unmatched constraints: [:id]
from app/views/user_mailer/account_activation.html.erb:9:in _app_views_user_mailer_account_activation_html_erb___3703118489382282531_47409448002620' from app/mailers/user_mailer.rb:6:inaccount_activation'
from app/models/user.rb:58:in `send_activation_email'
from (irb):3

Независимо от того, что я пытался, я не мог воссоздать ошибку (яизменил адрес электронной почты для обеспечения конфиденциальности)

users_controller.rb

def create
    @user = User.new(user_params)
    if @user.save
      @user.send_activation_email
      flash[:info] = "Please check your email to activate your account"
      redirect_to root_url
    else
      render 'new'
    end
  end

User.rb

    def send_activation_email
        UserMailer.account_activation(self).deliver
    end

user_mailer.rb

  def account_activation(user)
    @user = user
    mail( :to => @user.email, :subject => 'Account Activation | Student', :id => @user.activation_token)
  end

My account_activation_controller.rb

def edit
        user = User.find_by(email: params[:email])
        if user && !user.activated? && user.authenticated?(:activation, params[:id])
            user.activate
            log_in user
            flash[:success] = "Account activated!"
            redirect_to user
        else
            flash[:danger] = "Invalid activation link"
            redirect_to root_url
        end
    end

Мой github https://github.com/Conbonbot/Community_Service_Logger

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

...