购物车结帐>>发送包含购物车项目的电子邮件

时间:2016-09-29 06:30:42

标签: ruby-on-rails ruby-on-rails-4

我有一个"添加到购物车"功能在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下只是一个要求提供信息的表单。

我真正不知道从哪里开始创建CartsCheckouts之间的关联,我如何将购物车中的商品与电子邮件一起发送?

非常感谢任何帮助或建议!谢谢!

0 个答案:

没有答案