Пожалуйста, я буду признателен за помощь в этом.
У меня есть представление с 4 формами (созданными из итерации массива планов) со скрытым полем plan_id
в каждой из них. Я использую пользовательскую интеграцию Stripe
, и я отправляю конкретную форму для обратного вызова Javascript, однако plan_id
, передаваемый моему контроллеру rails, ВСЕГДА plan_id
последней формы на странице
<% @plans.each.with_index do | plan,index | %>
...
<%= form_tag('/billings/subscription_checkout',:id => "elm-#{index}",
method: :post) do %>
<input name="plan_id" type="hidden" value="<%= plan.code %>">
</input>
<a id="plan-<%= index %>" class="selectPlan" >Select Plan</a>
и затем я отправляю форму в обратном вызове JS таким образом:
<script>
var handler = StripeCheckout.configure({
key: "<%= Rails.configuration.stripe[:publishable_key] %>",
image: 'https://stripe.com/img/documentation/checkout/marketplace.png',
currency: 'usd',
token: function(token) {
stripeToken = token.id;
$("form#elm-<%= index%>").append($("<input type=\"hidden\"
name=\"stripeToken\" />").val(stripeToken));
$("form#elm-<%= index%>").submit();
...
При действии контроллера значение params[plan_id]
всегда устанавливается равным значению plan_id
в последней из форм, а не plan_id
, установленному в отправленной форме.
Если я, однако, отправляю форму за пределами обратного вызова, я получаю правильное значение в скрытом поле.
Пожалуйста, как лучше я справлюсь с этим