我正在使用 Rails3,目前正在使用“active_shipping”gem。当我使用以下代码行遍历费率集合时:
<%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
然后,当我使用 hash 时,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' 不能为 null: 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, xxxxxx@xxxxx.com, +xxxxxxx, xxxxx ,xxxx, United Kingdom ,xxxxxx', 5, 20, NULL , 45.34, NULL , 'xxxxx,xxxxx,xxxx, Woking, xxxxxx, United Kingdom', 'UPS Saver' )
它引发异常,因为该值未分配给 postage_rate。任何帮助将不胜感激。(对不起我的英语:()