有人可以解释以下Ruby on Rails错误吗?

时间:2016-12-13 13:51:57

标签: ruby-on-rails ruby ruby-on-rails-3

CandidatesController中的LoadError #create

  

无法自动加载常量Usermailer,预期Z:/railsassignment/student/app/mailers/usermailer.rb来定义

当我提交表单时,我收到上述错误。表单处理记录,候选人被添加到数据库,但是我试图发送给新注册候选人的欢迎电子邮件不发送,上述错误阻止用户继续进行。

候选人控制器

def create
  @candidate = Candidate.new(candidate_params)

 respond_to do |format|
   if @candidate.save
     Usermailer.welcome(@candidate).deliver_now ***<-- Error highlights this line***
     format.html { redirect_to @candidate, notice: 'User was successfully    
   created.' }
     format.json { render :show, status: :created, location: @candidate }
    else
     format.html { render :new }
     format.json { render json: @candidate.errors, status:   
 :unprocessable_entity }
   end
 end
end

usermailer.rb

Z:/railsassignment/student/app/mailers/usermailer.rb(usermailer directory)

class UserMailer < ActionMailer::Base
 default from: "from@example.com"

def welcome(candidate)
 @candidate = candidate
 mail(:to => candidate.can_email, :subject => "Welcome to EmployeMe.com, You    
 have registered successfully!")
 end
end

如果你需要查看更多文件,请给我发表评论,我会很快将它们添加到问题中。

2 个答案:

答案 0 :(得分:3)

这似乎是一个混乱的命名约定的情况。

根据Rails命名约定,文件名应位于snake_case中的CamelCase类名中。在您的方案中,文件名应为user_mailer.rb

因此,要么usermailer.rb重命名为user_mailer.rb 要么 班级名称UserMailerUsermailer

答案 1 :(得分:1)

始终使用蛇形案例作为文件名。

Z:/railsassignment/student/app/mailers/user_mailer.rb

不会

Z:/railsassignment/student/app/mailers/usermailer.rb

始终使用驼峰案例作为您的班级名称

UserMailer.welcome(@candidate).deliver_now

不会

Usermailer.welcome(@candidate).deliver_now

如果您对常量加载如何使用rails感兴趣,可以选择this