Preston PHX заслуживает большой похвалы за то, что указал мне правильное направление ... но именно мой друг Гэри решил эту маленькую дилемму за два часа go:
просмотр:
paypal.Buttons({
env: "#{ENV['PAYPAL_ENV']}",
createOrder: async () => {
const response = await fetch('/create_order', {method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({"price" : document.getElementById('amount').value})
});
const responseData = await response.json();
return responseData.token;
},
контроллер:
def create_order
price = params[:amount]
request = PayPalCheckoutSdk::Orders::OrdersCreateRequest::new
request.request_body({
:intent => 'CAPTURE',
:purchase_units => [
{
:amount => {
:currency_code => 'USD',
:value => price
}
}
]
})
И все. Это полностью отвечает на вопрос о том, как ввести цену в контроллер ... и как получить цену из формы в javascript, чтобы она была отправлена в контроллер.
Меня поражает, что после месяца поисков я ни разу не встретил ни одного упоминания о том, как это сделать. Я предполагаю, что существует МНОГО приложений, в которых вы хотите, чтобы пользователь сам выбирал сумму, которую он собирается платить, и валюту.