Я использую Rails3 и в настоящее время использую гем «active_shipping». Когда я повторяю сбор ставок, используя следующие строки кода:
<%res.rates.sort_by(&:price).each do |rate|%>
<%service_name = rate.service_name%>
<%postage_rate = (@bank.get_rate(res.rate_estimates[0].currency,:USD)
* (rate.price).to_f/100).round(2)%>
<%=service_name%>, <%=postage_rate%>
Я получаю следующий вывод:
UPS Standard, 40,93
UPS Saver, 73,56
UPS Express, 76,54
UPS Worldwide Express Plus, 129,16
Затем, когда я использую хеш, где service_name — ключ, а postage_rate — значение.
<%records = {service_name => postage_rate }%>
Затем я создаю radio_buttons:
<%records.each do |key,value| %>
<%=f.radio_button :service_name,key%> <%="#{key}, #{value}" %><br/>
Весь код выглядит следующим образом:
<%res.rates.sort_by(&:price).each do |rate|%>
<%service_name = rate.service_name%>
<%postage_rate = (@bank.get_rate(res.rate_estimates[0].currency,:USD)
* (rate.price).to_f/100).round(2)%>
<%records = {service_name => postage_rate }%>
<%records.each do |key,value| %>
<%=f.radio_button :service_name,key%> <%="#{key}, #{value}" %><br/>
<%records.length do |i|%>
<%if i.checked == "true"%>
<% if (records.key?(key)) %>
<%postage_rate = records["#{key}"]%>
<%= f.hidden_field :service_name,:value=>key%>
<%= f.hidden_field :postage_rate, :value=>postage_rate%>
<%= f.hidden_field :price_and_rate, :value=>((p.price * order_item.amount)
+ (postage_rate * order_item.amount)).round(2)%>
<%= f.hidden_field :admin_charge, :value=>(((p.price * order_item.amount)+
(postage_rate * order_item.amount))/100).round(2)%><br/>
<%end%>
<%end%>
<%end%>
<%end%>
Service_name получает значение, а postage_rate — нет. Я не могу понять, почему. Я получаю следующее исключение:
Mysql2::Error: Столбец 'admin_charge' не может быть нулевым: INSERT INTO curriers
(admin_charge
, amount
, buyer
, cart_id
, order_item_id
, postage_rate
, price
, price_and_rate
, seller
, service_name
) VALUES (NULL, 1, 'xxxxxx, [email protected], +xxxxxxx, xxxxx ,xxxx, United Kingdom ,xxxxxx', 5, 20, NULL, 45.34, NULL, 'xxxxx,xxxxx ,xxxx, Уокинг, xxxxxx, Великобритания", "Экономия UPS")
Он выдает исключение, потому что значение postage_rate не присвоено. Любая помощь будет оценена. (Извините за мой английский :()