关于这个主题的许多类似的问答在这里和那里,但我无法找到我的问题的确切解决方案。现在使用Rails 3.0.9,并尝试升级现有的旧应用程序(而不是Rails)。 目标是向管理员创建的新客户发送简单的电子邮件。 一直关注this oficial guide(以及其他许多人),但没有成功。
问题是,该控制器中定义的方法(来自“UserMailer”类)不能从另一个控制器识别,而“UserMailer”类本身被识别出来(我怎么知道这个,将在下面解释) ):
/app/mailers/user_mailer.rb
class UserMailer < ActionMailer::Base
default :from => "info@xxxxx.sk"
def kokotina # << this is just a dummy method for testing
caf = "ssss"
end
def regMailUsr(nazov, priezvisko, email, pass)
@nazov = nazov
@priezvisko = priezvisko
@email = email
@pass = pass
@url = "http://loyalty2.xxxx.sk"
mail(to: email, subject: 'Vaša registrácia bola dokončená.')
end
end
我还为这个邮件控制器创建了View,但现在这并不重要。
客户端控制器的片段在这里:
/app/controllers/clients_controller.rb
# encoding: UTF-8
class ClientsController < ApplicationController
load_and_authorize_resource
.......
def new
@noveHeslo = genHeslo(10) # << I defined this in application_controller.rb and it works
UserMailer.kokotina # << just a dummy method from UserMailer
@client = Client.new(params[:client])
.......
end
.......
def create
.......
if @client.save
#send email to new client:
UserMailer.regMailUsr(params[:client][:fname], params[:client][:lname], params[:client][:email], params[:client][:password]).deliver
.....
end ......
现在怎么知道我的班级已加载?如果在客户端控制器中,我将'UserMailer'更改为'xUserMailer',我会得到'没有类或方法...'错误,但没有'x',我只得到:
对于UserMailer,'未定义的方法`kokotina':Class'
我还尝试在UserMailer中定义我的方法:类如下:
def self.kokotina # << this is just a dummy method for testing
caf = "ssss"
end
#or even like this
def self <<
def kokotina # << this is just a dummy method for testing
caf = "ssss"
end
end
#and then tried to invoke this method(s) like this:
UserMailer.new.kokotina
#or simply
kokotina
奇怪的是,当我把文件'/app/mailers/user_mailer.rb'的内容放在'application_helper.rb'文件末尾时,就在'模块ApplicationHelper'结束之后,我得到的错误是当然,它不会起作用。
请记住,我用其他语言编码没有问题,但Ruby on Rails的神秘/讽刺规则对我来说仍然是一个完全的错误,不幸的是,我没有时间甚至没有动力去阅读时间为RoR初学者提供甚至是书籍。我一直在编写更加困难的应用程序和实现,但是这个极具辨别力的系统让我疯狂。
谢谢大家!
答案 0 :(得分:0)
问题解决了! 诀窍是,在'/app/mailers/user_mailer.rb'中,我有多字节字符。在邮件主题。 所以我补充道:
在'/app/mailers/user_mailer.rb'的第一行
我发现这是完全意外:后来我的rails应用程序无法启动,服务器只是抛出HTTP 500错误。所以没有痕迹,错误定义等。
我发现多字节字符串在: mail(to:email,subject:'Vašaregistráciaboladonončená。')
负责崩溃。当我删除那个字符串时,我注意到一个重要的副作用:我的方法变得魔法可用于另一个控制器!!!!
所以如果有人能给我至少一个理由来降低Rails ......