У меня есть магазин, где вы можете купить цифровые продукты через загрузку.Каждый купленный продукт (я тестировал несколько продуктов) отображает одну и ту же информацию о продукте (title, art_link и download_url) на странице благодарности сразу после покупки.
Что я делаю здесь неправильно, что мешает емузагрузка правильных данных из только что купленного пакета?
Я использую Stripe для платежей.Все остальное работает отлично, деньги проходят, электронное письмо отправляется и ссылки на квитанцию, UUID работает и т. Д.
ОБНОВЛЕНИЕ: Я проверил свою БД и все сохраняетсяправильно.Единственная проблема заключается в том, что представление purchases/show
не воспроизводится должным образом.
покупок / шоу:
<p><b><%= @pack.title %></b></p>
<%= image_tag("#{@pack.art_link}", :alt => "#{@pack.title} sound library.", :width => 330, :height => 330, class: "img-center img-responsive shade") %>
<p><a class="btn btn-success top-drop" href="<%= @pack.download_url %>" target="_blank">Download Files</a></p>
контроллер покупок:
def show
@purchase = Purchase.find_by_uuid(params[:id])
@pack = Pack.find(@purchase.product_id)
set_meta_tags noindex: true
end
Модель покупки:
attr_accessor :download_token
after_create :email_purchaser
def to_param
uuid
end
def email_purchaser
PurchaseMailer.purchase_receipt(self).deliver
end
def Purchase.new_token
SecureRandom.urlsafe_base64
end
def create_download
self.download_token = Purchase.email.new_token
update_attribute(:download, Purchase.email(download_token))
update_attribute(:download_sent_at, Time.zone.now)
end
char_controller:
def create
pack = Pack.find(params[:product_id])
customer = Stripe::Customer.create(
:email => params[:stripeEmail],
:source => params[:stripeToken],
)
# Amount in cents
charge = Stripe::Charge.create(
:customer => customer.id,
:amount => pack.price_in_cents,
:description => 'Rails Stripe customer',
:currency => 'usd',
)
purchase = Purchase.create(
email: params[:stripeEmail],
card: params[:stripeToken],
amount: pack.price_in_cents,
description: charge.description,
currency: charge.currency,
customer_id: customer.id,
product_id: pack.id,
uuid: SecureRandom.uuid,
)
redirect_to purchase
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to new_charge_path
end
Большое спасибо, это действительно менязастрял.
Routes.rb:
resources :packs, :path => 'products'
resources :charges
resources :purchases, only: [:show]