2015-04-25 3 views
0

Итак, я реализую скрипт «checkout.js» для оплаты «бронирования». У меня есть следующий в бронировании/show.html.erbStripe - Передача параметра «Сумма» из другой таблицы

<center> 
    <b>Address:</b> 
    <%= @booking.address %> 
</p> 

<p> 
    <b>Catering:</b> 
    <%= @booking.catering.foodtype %> 
    <b>$</b> 
    <%= @booking.catering.cost %> 
</p> 

<p> 
    <b>Customer:</b> 

    <%= @booking.customer.name %> 
</p> 

<p> 
    <b>Eventtype:</b> 
    <%= @booking.eventtype %> 
</p> 

<p> 
    <b>Finishdatetime:</b> 
    <%= @booking.finishdatetime %> 
</p> 

<p> 
    <b>Marquee:</b> 

    <%= @booking.marquee.name%> 
    <b>$</b> 
    <%= @booking.marquee.cost%> 
</p> 

<p> 
    <b>Musician:</b> 
    <%= @booking.musician.name %> 
    <b>$</b> 
    <%= @booking.musician.cost %> 
</p> 

<p> 
    <b>Size:</b> 
    <%= @booking.size %> 
</p> 

<p> 
    <b>Startdatetime:</b> 
    <%= @booking.startdatetime %> 
</p> 

<p> 
    <b>Toilet:</b> 
    <%= @booking.toilet.name %> 
    <b>$</b> 
    <%= @booking.toilet.cost %> 
</p> 

<p> 
<b>TOTAL COST:</b> 
<%= @totalcost = @booking.toilet.cost + @booking.musician.cost + @booking.catering.cost + @booking.marquee.cost %> 

</p> 


<p> 
<a href="#" onclick="window.print();return false;">Print this invoice</a> 
</p> 

<a href="http://localhost:3000/charges/new">Pay</a> 

</center> 

Однако в моем контроллере зарядов, сумма закодирована в метод создания, например, так

class ChargesController < ApplicationController 

    def new 
    end 

    def create 
     # Amount in cents 
     @amount = 500 

     customer = Stripe::Customer.create(
     :email => params[:email], 
     :card => params[:stripeToken] 
    ) 

     charge = Stripe::Charge.create(
     :customer => customer.id, 
     :amount  => @amount, 
     :description => 'Rails Stripe customer', 
     :currency => 'eur' 
    ) 

    rescue Stripe::CardError => e 
     flash[:error] = e.message 
     redirect_to charges_path 
    end 
end 

Я хочу, чтобы это так что, когда я нажимаю «Оплатить» в нижней части моего шоу, он подводит меня к сбору/новой странице, где сумма передается. Я не уверен, как это сделать, поскольку метод создания сборов не будет знать, для какого экземпляра заказа взять параметры, потому что это просто прямая ссылка href на плату/новую страницу.

Возможно, это довольно сложно, но если кто-то может направить меня в правильном направлении, это было бы здорово!

+0

Вы можете пройти бронирования _id в качестве параметра запроса, как ' "HTTP: // локальный: 3000/сборы/новый booking_id = # {@ booking.id}"' а затем передать его в пост параметров create method –

+0

@PramodShinde Кажется, что это сработает. Не могли бы вы поместить его в свои «соответствующие классы»? –

ответ

0

Вы можете позвонить своему контроллеру create с запросом AJAX с количеством в параметрах. Тогда в контроллере можно сделать, например:

@amount = params['amount'] 

Вы должны проверить руководство Stripe, где все объяснить: https://stripe.com/docs/checkout/guides/rails

Как хорошо, есть так много способов сделать это, и я предлагаю вам решение, которое, возможно, не лучше.

Приветствия,

+0

Возможно, это плохая идея. Пользователь может изменить URL-адрес и изменить сумму платежа. Комментарий от @Pramod Shinde - это путь –