想要使用@saberma 的 china_city 实现一个 三阶地址选择,Gemfile/Application.js/routes.rb 已按官方指南设定。
在 view checkout.html.erb 里用 select_tag
来选择省市区域,选择框正常,且后台可以看到 province/city/area 有被赋值。
<h2>订单资讯</h2>
<div class="order-form">
<%= simple_form_for @order do |f| %>
<legend>配送地址</legend>
<div class="form-group col-md-6">
<%= f.input :shipping_name, label: '姓名' %>
<div class="city-group">
<%= f.label '地区' %>
<%= select_tag :province, options_for_select(ChinaCity.list.unshift(["--省份--", 0]),0), class: "city-select" %>
<%= select_tag :city, options_for_select(["--城市--", 0]), class: "city-select" %>
<%= select_tag :area, options_for_select(["--地区--", 0]), class: "city-select" %>
</div>
<br>
<%= f.input :shipping_address, label: '街道地址' %>
<%= f.input :phone_number, label: '电话' %>
</div>
<legend></legend>
<div class="checkout">
<%= f.submit "生成订单", class: "btn btn-lg btn-danger pull-right",
data: {disable_with: "Submitting..."} %>
</div>
<% end %>
</div>
但在下页 show.html.erb 里面,用ChinaCity.get
无法读出对应的 province/city/area。select_tag
并没有把值传递出去。
<h2>寄送资讯</h2>
<table class="table table-striped table-bordered">
<tbody>
<tr>
<td>
配送地址
</td>
</tr>
<tr>
<td>
<%= @order.shipping_name %><br>
<%= ChinaCity.get(@order.province) %> <%= ChinaCity.get(@order.city) %> <%= ChinaCity.get(@order.area) %><br>
<%= @user7ss %><br>
<%= @order.phone_number %>
</td>
</tr>
</tbody>
</table>
然后尝试把 checkout.html.erb 里面的select_tag
都换f.select
,选择框只有 province 可用,城市/地区 不可用;但是省份的值可以传递到 show 页面。
<!--同上,略-->
<%= f.select :province, options_for_select(ChinaCity.list.unshift(["--省份--", 0]),0), class: "city-select" %>
<%= f.select :city, options_for_select(["--城市--", 0]), class: "city-select" %>
<%= f.select :area, options_for_select(["--地区--", 0]), class: "city-select" %>
尝试看了 Form Helpers,并没有找到可行的方案。现在我要怎么做才能使 地址选择框在 checkout.html.erb 正常可用,然后值可以传递到下页 show.html.erb 里面?谢谢~