Я пытаюсь завершить настройку платежа в Ruby, но пытаюсь открыть экран подтверждения заказа для печати.Я настроил свой частичный для оплаты как таковой.
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
data-image="<%= asset_path(@product.image_url) %>"
data-name="<%= @product.name %>"
data-description="<%= @product.description %>"
data-amount="<%= @product.price*100.to_i %>">
</script>
Мой контроллер платежей.
class PaymentsController < ApplicationController
before_action :authenticate_user!
def create
@product = Product.find(params[:product_id])
@user = current_user
token = params[:stripeToken]
# Create the charge on Stripe's servers - this will charge the user's card
begin
charge = Stripe::Charge.create(
amount: @product.price, # amount in cents, again
currency: "eur",
source: token,
description: params[:stripeEmail]
)
if charge.paid
UserMailer.order_confirmation(@user, @product).deliver_now
Order.create!(
:product_id => @product.id,
:user_id => @user.id,
:total => @product.price_show
)
flash[:success] = "Your payment was processed successfully"
end
rescue Stripe::CardError => e
body = e.json_body
err = body[:error]
flash[:error] = "Unfortunately, there was an error processing your payment: #{err[:message]} Your card has not been charged. Please try again."
end
redirect_to product_path(@product), notice: "Thank you for your purchase."
end
end
и файл моих маршрутов.
Rails.application.routes.draw do
devise_for :users, path: '', path_names: { sign_in: 'login', sign_out: 'logout' },
controllers: {registrations: "user_registrations"}
resources :products do
resources :comments
end
post 'payments/create'
resources :users
resources :orders, only: [:index, :show, :create, :destroy]
resources :users, except: [:index]
get 'simple_pages/about'
get 'simple_pages/contact'
root 'simple_pages#landing_page'
post 'simple_pages/thank_you'
mount ActionCable.server => '/cable'
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
Форма внутри продукта show.html.erb
<%= form_with(url: '/payments/create') do |form| %>
<%= render partial: "shared/stripe_checkout_button" %>
<%= hidden_field_tag(:product_id, @product.id) %>
<% end %>
Однако, когда я пытаюсь завершить тестовый платеж, у меня появляется всплывающее окно с сообщением «Не удалось найти продукт без идентификатора».Я думал, что это было определено в разделе создания, но я не уверен, как это исправить.Любые предложения будут с благодарностью.