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のブートストラップを使用すると、ラッパーをまとめる代わりにすべてをハードコーディングします。
  2. 現在、state_code (必須プロパティ) の検証エラーは表示されません。
  3. 国を切り替えるときに州コードを保持しません。これは、parent_region とともに sub_region をサービスに渡すことで簡単に実装できます。
于 2013-02-07T21:49:28.780 に答える