我正在努力完成我的第一个电子商务网站。我在rails上使用ruby,我有一个由对fedex和USPS的API调用填充的select表单。看起来像这样
<%= f.select :shipping_type, ship_hash.map {|k, v| [k, k]}%>
哈希来自这里
<% ship_hash = {} %>
<% @order_preview.fedex_rates.each do |rate| %>
<% if rate.service_name == "FedEx Ground Home Delivery" || rate.service_name == "FedEx 2 Day" || rate.service_name == "FedEx Standard Overnight" %>
<% ship_hash["#{rate.service_name}"] = ["#{number_to_currency(rate.price.to_f / 100)}"] %>
<% end %>
<% end %>
<% @order_preview.usps_rates.each do |rate| %>
<% if rate.service_name == "USPS Priority Mail 1-Day" %>
<% ship_hash["#{rate.service_name}"] = ["#{number_to_currency(rate.price.to_f / 100)}"] %>
<% end %>
<% end %>
我需要将shipping_type和shipping_price都保存到数据库中。我不想要两种选择形式(没有意义,你可以混合/匹配......)
理想情况下,我想要一个选择表单,其中显示shipping_type,然后列出价格......并将它们保存到我的数据库中各自的列
我想我需要像
这样的东西<%= f.select :shipping_type, ship_hash.map {|k, v| [k, k]}, :shipping_price, ship_hash.map {|k| [k, k]} %>
但是这让我
undefined method `merge' for :shipping_price:Symbol
我猜不可能让两个不同的列填充一个选择字段,但是我提取费率,我想让用户在一个下拉列表中看到两种货运类型菜单,同时将部分拆分到数据库中的不同列,这样我以后可以使用算术......这有意义吗?
在这个墙上竖起一堵墙,我将不胜感激。
答案 0 :(得分:0)
这里的问题是你正在使用:
<select name="shipping_type">
只有一个参数(名称=&#34; shipping_type&#34;)
但你应该使用f.select。像这样:
f.select :shipping_type, @your_model_to_be_selected.map{ |c| [c.name, c.id] }
编辑: 由于您更新了问题,现在您的问题似乎是保存了多个条目。
您有两个选项,可以有两个选项,或者您可以在某种程度上在@your_model_to_be_selected.map{ |c| [c.name, c.id] }
内创建一个代表两个数据的逻辑。