フォームで carmen-rails を使用して、各国の国とサブリージョンを表示します。最初に国を選択すると、サブリージョンのリストも更新され、次にこれらの情報をデータベースに保存して 2 回目に移動します。上記のページに移動して別の国を選択すると、サブリージョンのリストが更新されません!! 次に、ページをリロードすると、それが行われます! これはコーヒースクリプト形式の私のjsファイルです:
$ ->
$('select#user_detail_attributes_country_code').change (event) ->
select_wrapper = $('#user_detail_attributes_state_code')
$('select', select_wrapper).attr('disabled', true)
country_code = $(this).val()
url = "/orders/subregion_options?parent_region=#{country_code}"
select_wrapper.load(url)
注:レール4を使用していますが、レール4は自動的にキャッシングを行い、リストを更新しませんか? またはjqueryの変更方法に問題がありますか?ここで問題が見つかりません。助けてください
私の注文コントローラーはパーシャルをレンダリングするだけです:
class OrdersController < ApplicationController
def subregion_options
render partial: 'orders/subregion_select'
end
end
サブリージョンの部分コードは次のとおりです。
div#order_state_code_wrapper
- detail ||= params[:detail]
- parent_region ||= params[:parent_region]
- country = Carmen::Country.coded(parent_region) unless parent_region.nil?
- if country.nil?
%em Please select a country above
- elsif country.subregions?
= label_tag :user_detail_attributes_state_code, "State"
= subregion_select_tag("user[detail_attributes][state_code]", detail.try(:state_code), parent_region)
- else
= label_tag :user_detail_attributes_state_code, "State"
= text_field_tag("user[detail_attributes][state_code]", detail.try(:state_code))
編集
jquery の change メソッド内にalert("foo")を追加しました。国を選択すると、"foo" というアラートが表示されたり、機能しない場合があります。