我有一个"添加到购物车"功能在Sessions基础上正常工作,因此当前没有用户登录。
这是模特
class Cart < ActiveRecord::Base
has_many :tutors
def add_tutor(tutor_id)
tutor = Tutor.find(tutor_id)
if tutor
self.tutors << tutor
end
save
end
end
这是控制器
class CartsController < ApplicationController
def show
@cart = current_cart
end
def add_to_cart
current_cart.add_tutor(params[:tutor_id])
redirect_to tutors_path
end
end
我想要做的是当用户结帐时,他们将被重定向到一个页面,其中包含一个简单的表格,要求提供他们的姓名/电子邮件/电话号码,当该电子邮件发送给我时,它包含的项目在他们的购物车中。
我目前正在使用gem 'mail_form'
,这就是我到目前为止所设置的内容。
模型checkout.rb
class Checkout < MailForm::Base
attribute :name, :validate => true
attribute :email, :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i
attribute :hp, :validate => true
def headers
{
:subject => "Tutor Checkout",
:to => "xxx@xxx.com"
}
end
end
Controller checkouts_controller.rb
class CheckoutsController < ApplicationController
def new
@checkout = Checkout.new
end
def create
@checkout = Checkout.new(params[:checkout])
@checkout.request = request
if @checkout.deliver
flash[:notice] = 'Thank you! We will be in touch with you shortly!'
else
flash[:error] = 'There was an error in sending your message!'
render :new
end
end
end
并在views/checkouts/new.html.erb
下只是一个要求提供信息的表单。
我真正不知道从哪里开始创建Carts
和Checkouts
之间的关联,我如何将购物车中的商品与电子邮件一起发送?
非常感谢任何帮助或建议!谢谢!