Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用另一个类中的方法? class客户_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何使用另一个类中的方法? class客户

Ruby on rails 如何使用另一个类中的方法? class客户,ruby-on-rails,ruby,Ruby On Rails,Ruby,控制器: class Customers < ActiveRecord::Base def check_user_name ... mailto = Emailer.new mailto.contact(email, subject='ask', question) end end class Emailer < ActionMailer::Base def contact(email, subject, question, sent_at =

控制器

class Customers < ActiveRecord::Base
  def check_user_name
    ...
    mailto = Emailer.new
    mailto.contact(email, subject='ask', question)
  end
end

class Emailer < ActionMailer::Base
  def contact(email, subject, question, sent_at = Time.now)
  ...
  end
end
class CustomerController
出现以下错误:

CustomerController中的Nomethoder错误#检查用户


您正在方法中传递参数,并且您在模型中定义的方法没有接受参数。您应该执行以下操作:

class CustomersController < ApplicationController  
  def ask    
  end

  def check_user    
    cust = Customers.new
    @answer = cust.check_user_name(params[:name], params[:email], params[:question])    
  end

end
class客户

希望以上内容能为您提供想法和帮助。

控制器的代码在哪里?您的
联系人
方法是否公开?为什么要传递一些奇怪的参数,比如
subject='ask'
?关于subject='ask'-这只是个例子。如何知道该方法是公共的?:)我把这个方法公开。现在为Emailer调用私有方法“new”时出错:ClassI认为您应该对cust.check\u user\u name方法有问题,因为它的定义不正确。请检查我的答案。仍然有错误:为Emailer调用了私有方法“new”:类无法创建Emailer的对象。您可以直接调用Mailer类的方法。请通过:RailsGuid->和RailsCast->确定。我运行这个命令:railsgeneratemailer UserMailer。然后在那里执行我的代码。并没有错误…一切正常…但邮件并没有发送…我想,tah是因为我尝试从本地服务器上对邮件进行沙粒处理。不,如果配置良好,您可以从本地服务器发送邮件。请通过火车站。
class Customers < ActiveRecord::Base
  def check_user_name(name,email,question)
    mailto = Emailer.new
    mailto.contact(email, subject='ask', question)
  end
end

class Emailer < ActionMailer::Base
  def contact(email, subject, question, sent_at = Time.now)
  end
end