私は 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
次に、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::エラー: 列 'admin_charge' を null にすることはできません: INSERT INTO curriers
( admin_charge
, amount
, buyer
, cart_id
,
order_item_id
, postage_rate
, price
,
) VALUES ( NULLprice_and_rate
, 1 seller
, 'xxxxxx, xxxxxx@xxxxx.com, +xxxxxxx, xxxxx ,xxxx, United Kingdom ,xxxxxx', 5, 20, NULL , 45.34, NULL , 'xxxxx,xxxxx,xxxx, ウォーキング, xxxxxx, イギリス', 'UPS Saver' )service_name
値が postage_rate に割り当てられていないため、例外がスローされます。どんな助けでも大歓迎です.(私の英語で申し訳ありません:( )