Установить значение скрытого поля в форме Rails с помощью обратных вызовов Javascript - PullRequest
0 голосов
/ 11 мая 2018

Пожалуйста, я буду признателен за помощь в этом. У меня есть представление с 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, установленному в отправленной форме.

Если я, однако, отправляю форму за пределами обратного вызова, я получаю правильное значение в скрытом поле.

Пожалуйста, как лучше я справлюсь с этим

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