你好,我正在阅读带有Rails第4版书籍的敏捷Web开发,但我在“任务H:发送邮件”中遇到了一个错误
我有邮件order_notifier.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.text.erb和shipped.text.erb的模板 /views/order_notifier/
Dear <%= @order.name %>
Thank you for your recent order from The Pragmatic Store.
You ordered the following items:
<%= render @order.line_items %>
We'll send you a separate e-mail when your order ships.我在OrdersController上运行它,我不确定是使用current_cart还是@cart,但我想这并不重要
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接收方法的error im tels方法比它需要的参数多一个参数(@order),但书中是这样写的。错误:
ArgumentError in OrdersController#create
wrong number of arguments (1 for 0)哪里出错了?谢谢。
发布于 2013-08-09 13:08:34
错误在于,received方法在OrderNotifier中不带参数,但是控制器正在传递参数。您应该修改通知程序以接受一个参数,order。
另外,我不建议阅读带有Rails的敏捷Web开发。
https://stackoverflow.com/questions/18147264
复制相似问题