Сохранение из петли переключателя ответа json в форме - PullRequest
0 голосов
/ 04 июля 2019

У меня есть ответ json, который я запускаю через цикл в переключатели в форме.

При отправке все проходит, но при попытке сохранить выбор сохраняет только заголовок выбора ине значение параметра.

Запрос API:

@rates = Shipstation::Shipment.get_rates({
              ....

            })

Форма (я пробовал все 4):

  <% @rates.each do |rate| %>
    <%= form.radio_button :shipping_rate_response, rate %> <%= rate %><br />
  <% end %>

  <% @rates.map do |rate| %>
    <%= form.radio_button :shipping_rate_response, rate %> <%= rate %><br />
  <% end %>

  <% @rates.as_json.each do |rate| %>
    <%= form.radio_button :shipping_rate_response, value: rate %> <%= rate %><br />
  <% end %>

  <% @rates.as_json.map do |rate| %>
    <%= form.radio_button :shipping_rate_response, value: rate %> <%= rate %><br />
  <% end %>

Когда я использую 'rate' вместо простого rate, он не пропустит параметры json и пропустит только заголовок.

Создать: попытка 1:

  @shipping_rate.service_code = params["shipping_rate"]["shipping_rate_response"]["serviceCode"]
    @shipping_rate.service_price = params["shipping_rate"]["shipping_rate_response"]["shipmentCost"]

попытка 2:

shipping_rate_choice = params["shipping_rate"]["shipping_rate_response"]
@shipping_rate.service_code = shipping_rate_choice["serviceCode"]
@shipping_rate.service_price = shipping_rate_choice["shipmentCost"]

Ответ при отправке формы:

..."shipping_rate"=>{"cart_id"=>"111", "shipping_address_id"=>"74", "shipping_rate_response"=>"{\"serviceName\"=>\"USPS Priority Mail - Package\", \"serviceCode\"=>\"usps_priority_mail\", \"shipmentCost\"=>7.42, \"otherCost\"=>0.0}"}, "commit"=>"Update Shipping rate", "id"=>"53"}

Что сохраняет:

serviceCode и serviceCost, в модель ... Названия значения, которое я хочу сохранить.

Я предполагаю, что что-то с radio_buttons вызывает это, ноне могу понять, что или почему.Я попытался to_json и as_json, чтобы посмотреть, поможет ли это параметрам, но они выглядят одинаково.

Когда я передаю @rates в консоли, он не идет с косой чертой, и я могу определитьрезультаты.

Есть ли другой способ перебирать @rates и отображать их в форме в качестве вариантов для выбора того, который будет работать?

Я могу сделать следующее ::

<% @rates.each do |rate| %>
      <%= form_for @shipping_rate do |form| %>
      <%= rate %>
        <%= form.hidden_field :service_code, value: rate["serviceCode"] %>
        <%= form.hidden_field :service_price, value: rate["shipmentCost"] %>
        <%= form.hidden_field :cart_id, value: @cart.id %>
        <%= form.hidden_field :shipping_address_id, value: @shipping_address.id %>
        <%= form.submit %>
      <% end %>
    <% end %>

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

...