Hash 无法在哈希中显示键的值
我正在使用Rails3,目前正在使用“active_shipping”gem。当我使用以下代码行遍历速率集合时:Hash 无法在哈希中显示键的值,hash,radio-button,key,shipping,Hash,Radio Button,Key,Shipping,我正在使用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.p
<%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标准,40.93不间断电源节电器,73.56
UPS Express,76.54
UPS全球快递Plus,129.16 然后当我使用hash时,其中service\u name是一个键,postage\u rate是一个值
<%records = {service_name => postage_rate }%>
postage\u rate}%>
然后我创建单选按钮:
<%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%>
邮资率}%>
密钥%>
邮资率%>
((p.价格*订单项目金额)
+(邮资*订购物品金额)。第(2)轮%>
((p.价格*订单项目金额)+
(邮资*订购物品.金额))/100)。第(2)轮%>
为服务名称分配了一个值,但未指定邮资率。我不明白为什么。我得到以下例外情况:
Mysql2::错误:“管理员费用”列不能为空:
插入货币(管理费,金额,买家,购物车id
,
order\u item\u id
,邮资
,价格
,
价格和费率
,卖方
,服务名称
)
值(NULL,1,'xxxxxx,xxxxxx@xxxxx.com,+xxxxxxx,xxxxx,xxxxx,英国,xxxxxx',5,20,NULL,45.34,NULL,'xxxxx,xxxxx,Woking,xxxxxx,英国','UPS Saver')
它抛出一个异常,因为该值未分配给postage_rate。
任何帮助都将不胜感激。(对不起我的英文:()第一步::我已将:服务名称和:邮资转换为一个字符串:
<%service_name = "#{rate.service_name} ,
# {(@bank.get_rate(res.rate_estimates[0].currency,:USD)
* (rate.price).to_f/100).round(2)}"%>
第四步:我想让我的“添加”按钮做两件事:a)保存curriers表中的:service\u name属性,b)同时更新order\u items表中的:postage\u rate、:price\u and\u rate和:admin\u charge属性。因此,我在CurriersController文件中更改了创建方法:
def create
@currier = Currier.new(params[:currier])
if @currier.save
@order_item = OrderItem.find(@currier.order_item.id)
value = @currier.get_postage_rate
@order_item.update_attributes(
:postage_rate =>value.to_f,
:price_and_rate => ((@order_item.price * @order_item.amount)
+(value.to_f * @order_item.amount)).round(2),
:admin_charge => (((@order_item.price * @order_item.amount)+
(value.to_f * @order_item.amount))/100).round(2)
) if @currier.service_name != ""
flash[:notice]= "Currier #{@currier.service_name} was successfully created."
redirect_to :controller=>'checkout',:action => 'rate_response'
else
@page_title = ''
render :action=>'new'
end
end
def get_postage_rate
"#{service_name}".match(/(\d+)\.(\d+)/).to_s
end
def create
@currier = Currier.new(params[:currier])
if @currier.save
@order_item = OrderItem.find(@currier.order_item.id)
value = @currier.get_postage_rate
@order_item.update_attributes(
:postage_rate =>value.to_f,
:price_and_rate => ((@order_item.price * @order_item.amount)
+(value.to_f * @order_item.amount)).round(2),
:admin_charge => (((@order_item.price * @order_item.amount)+
(value.to_f * @order_item.amount))/100).round(2)
) if @currier.service_name != ""
flash[:notice]= "Currier #{@currier.service_name} was successfully created."
redirect_to :controller=>'checkout',:action => 'rate_response'
else
@page_title = ''
render :action=>'new'
end
end