4

我正在使用 carmen-rails 进行状态下拉菜单。国家/地区更新时状态下拉列表会动态更新,但在编辑页面上,状态下拉列表不会默认为保存的状态值。任何人都可以帮忙吗?

仅供参考 - 我将保存的状态值作为本地参数 u

<div id="order_state_code_wrapper">
  <% parent_region ||= params[:parent_region] %>
  <% if parent_region.nil? %>
    <em>Please select a country above</em>
  <% else %>
    <% country = Carmen::Country.coded(parent_region) %>
    <% if country.nil? %>
       <em>Please select a country above</em>
    <% elsif country.subregions? %>
       <%= subregion_select(:user, :subregion_iso2, parent_region) %>
    <% else %>
       <%= text_field(:user, :subregion_iso2) %>
    <% end %>
  <% end %>
</div>
4

1 回答 1

3

我遇到了同样的问题并通过执行以下操作解决了它(https://github.com/jim/carmen-rails/issues/12指出了正确的方向)。它还不是最佳的,但它可以完成工作。

<div id="shipping_tally_state_code_wrapper">
<div class="control-group carmen_state required">
  <label class="carmen_state_code required control-label" for="shipping_tally_state_code"><abbr title="required">*</abbr> Province</label>
    <div class="controls">
      <% parent_region ||= params[:parent_region] %>
      <% sub_region ||= params[:sub_region] %>
      <% country = Carmen::Country.coded(parent_region) %>
      <% if country.nil? %>
        <span class="help-inline display-id"><em>Please select a country above</em></span>
      <% elsif country.subregions? %>
      <%= subregion_select_tag('shipping_tally[state_code]', sub_region, country) %>
      <% else %>
      <%= text_field_tag('shipping_tally[state_code]', sub_region) %>
      <% end %>
    </div>
</div>
</div>

然后使用以下内容调用此部分:

<%= render partial: 'shared/forms/subregion_select', :locals => { :parent_region => f.object.country_code, :sub_region => f.object.state_code } %>

适用的 js.coffee 没有变化。

需要改进的地方:

  1. 使用 twitter bootstrap 对所有内容进行硬编码,而不是将包装器放在一起。
  2. 当前不显示 state_code(必需属性)的验证错误。
  3. 切换国家时不保留州代码。通过将 sub_region 与 parent_region 一起传递给服务,这将很容易实现。
于 2013-02-07T21:49:28.780 回答