Hash 无法在哈希中显示键的值

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

我正在使用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标准,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