Оформить заказ в корзину >> Отправить электронное письмо с включенными в корзину товарами

#ruby-on-rails #ruby-on-rails-4

#ruby-on-rails #ruby-on-rails-4

Вопрос:

У меня есть функция «Добавить в корзину», которая работает нормально на основе сеансов, поэтому ни один пользователь в данный момент не вошел в систему.

Вот модель

 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
  

Контроллер 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 и как мне вообще включить товары в корзину для отправки вместе с электронной почтой?

Любая помощь или совет будут с благодарностью приняты! Спасибо!

Комментарии:

1. Ассоциация должна быть оформлением заказа has_many carts. В корзине есть множество наставников. Верно? Затем вы можете вызвать корзину чекаутов и всех преподавателей, связанных с этой корзиной.