Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 3 Rails邮件程序错误:参数数目错误(1表示0)_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 3 Rails邮件程序错误:参数数目错误(1表示0)

Ruby on rails 3 Rails邮件程序错误:参数数目错误(1表示0),ruby-on-rails-3,Ruby On Rails 3,您好,我正在阅读Rails第四版《敏捷Web开发》一书,但我在“任务H:发送邮件”中遇到了一个错误 我有mailer订单通知程序.rb class OrderNotifier < ActionMailer::Base default :from => "name@email.tld" def received @order = order mail(:to => order.email, :subject => 'Pragmatic Store

您好,我正在阅读Rails第四版《敏捷Web开发》一书,但我在“任务H:发送邮件”中遇到了一个错误

我有mailer订单通知程序.rb

class OrderNotifier < ActionMailer::Base
  default :from => "name@email.tld"

  def received
    @order = order
    mail(:to => order.email, :subject => 'Pragmatic Store Order Confirmation')
  end

  def shipped
    @order = order
    mail(:to => order.email, :subject => 'Pragmatic Store Order Shipped')
  end
end
错误我得到的消息告诉我received方法有一个参数比它需要的多(@order),但书中就是这样写的。。错误:

ArgumentError in OrdersController#create
wrong number of arguments (1 for 0)

错在哪里?谢谢。

错误在于OrderNotifier中的
received
方法没有接受参数,但控制器正在传递参数。您应该修改通知程序以接受一个参数,
order


另一方面,我不建议阅读使用Rails的敏捷Web开发。

错误在于,OrderNotifier中的
received
方法不接受参数,但控制器正在传递参数。您应该修改通知程序以接受一个参数,
order


顺便说一句,我不推荐阅读使用Rails的敏捷Web开发。

谢谢,它很管用。。不管怎么说,为什么你不推荐读那本书呢?这对我有很大帮助。没错,有时候我需要在书的网站上查看实现的信息,因为不同的rails版本。thanksI认为使用Rails进行敏捷Web开发对于希望在Rails中构建应用程序的人来说是一本很棒的入门书;我在书中没有看到“很多”错误…谢谢,它很有效。。不管怎么说,为什么你不推荐读那本书呢?这对我有很大帮助。没错,有时候我需要在书的网站上查看实现的信息,因为不同的rails版本。thanksI认为使用Rails进行敏捷Web开发对于希望在Rails中构建应用程序的人来说是一本很棒的入门书;我在书中没有看到“许多”错误。。。
def create
    @order = Order.new(params[:order])
    @order.add_line_items_from_cart(current_cart)
    #@order.add_line_items_from_cart(@cart)

    respond_to do |format|
 if @order.save
    Cart.destroy(session[:cart_id])
    session[:cart_id] = nil
    OrderNotifier.received(@order).deliver
ArgumentError in OrdersController#create
wrong number of arguments (1 for 0)