Параметры не передают ничего или передают ноль - PullRequest
0 голосов
/ 15 января 2019

Контроллер платежей:

class PaymentsController < ApplicationController
  before_action :authenticate_user!
  def show
    @user = current_user
    @orders = Order.where(user_id: @user.email)
    @products = Product.all
  end

  def create
    @product = Product.find(params[:product_id])
    token = params[:stripeToken]
    # Create the charge on Stripe's servers - this will charge the user's card
    price = @product.avgprice.to_i*100
    @user = current_user
    begin
      charge = Stripe::Charge.create(
        amount: price,
        currency: "gbp",
        source: token,
        description: params[:stripeEmail],
        reciept_email: @user.email
      )

      if charge.paid
        Order.create(product_id: @product.id, user_id: @user.email, total: price)
      end
    rescue Stripe::CardError => e
      #The card has been declined
      body = e.json_body
      err = body[:error]
      flash[:error] = "Unfortunately, there was an error processing your payment: #{err[:message]}"
    end
    redirect_to(payments_show_path)
  end
end

_stripe_checkout_button.html:

<%price = @product.avgprice.to_i * 100%>
<form action="your-server-side-code" method="POST">
  <script
    src="https://checkout.stripe.com/checkout.js" class="stripe-button"
    data-key="<%= Rails.configuration.stripe[:publishable_key] %>"

    data-amount="<%=price%>"
    data-name= "<%=@product.name%>"
    data-description="<%=@product.description%>"
    data-image="https://stripe.com/img/documentation/checkout/marketplace.png"
    data-locale="auto"
    data-currency="gbp">

  </script>
  <%= hidden_field_tag(:product_id, @product.id)%>
</form>

show.html.erb:

<%= form_with(url: '/payments/create') do |form| %>
<%= render partial: 'shared/stripe_checkout_button'%>
<% end %>

Я ожидал, что <% = hidden_field_tag ​​(: product_id, @ product.id)%> передаст идентификатор продукта контроллеру платежей в @product = Product.find(params[:product_id]). Но, похоже, это не работает. Любая помощь? Ошибка, которую я получаю от этого: ActiveRecord :: RecordNotFound в PaymentsController # create Не удалось найти товар без идентификатора

1 Ответ

0 голосов
/ 17 января 2019

Хорошо, решение, которое я и мой наставник нашли, состояло в том, чтобы изменить значение на не динамическое значение. Я не понял, почему это сработало, но это сработало:

Спасибо всем, кто помог в пути

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...