CoffeeScript para seleccionar campos de formulario dinámicamente al cambiar y al cargar

Tengo una aplicación Rails en la que intento seleccionar una lista de instalaciones en función de la región seleccionada en un formulario. Hasta ahora, he implementado group_collection_select para hacer esto, así como un poco de CoffeeScript.

Funciona al crear un nuevo registro y seleccionar una región. El comportamiento es mostrar solo las instalaciones enumeradas para la región seleccionada. Lo que no funciona es al editar un registro, al seleccionar las instalaciones se muestran todas las instalaciones agrupadas por región en lugar de restringir las instalaciones a la región seleccionada.

Si selecciono otra región y luego selecciono el motivo original, aparece la lista adecuada de instalaciones.

Me gustaría aprender cómo refactorizar el CoffeeScript a dónde, al editar el registro, la función se activa tanto en la carga de la página (cuando se edita) como en el cambio.

Por último, hay casos de uso cuando transfer_from_id se establece en nil / blank y usamos un campo de texto llamado transfer_from_other. Actualmente, si no selecciono una instalación y relleno transfer_from_other, debido a que CoffeeScript carga las instalaciones en transfer_from_id, establecerá transfer_from_id por la primera instalación en el alcance. Me gustaría hacer esto donde, si no se selecciona ninguna instalación, transfer_from_id es nil para que pueda usar transfer_from_other.

Así es como se ve mi código:

llamadas.js.café

jQuery ->
  facilities = $('#call_transfer_from_id').html()

  $('#call_region_id').change ->
    region = $('#call_region_id :selected').text()
    options = $(facilities).filter("optgroup[label=#{region}]").html()

    if options
      $('#call_transfer_from_id').html(options)   
    else
      $('#call_transfer_from_id').empty()

region.rb

has_many :facilities

facilidad.rb

attr_accessible :region_id
belongs_to :region

_form.html.erb extracto

      <%= f.label :region %>
      <%= f.collection_select(:region_id, Region.all, :id, :area, {:include_blank => true}, {:class => 'select', required: true}) %>
      <%= f.label :Transfer_From %>
      <%= f.grouped_collection_select :transfer_from_id, Region.order(:area), :active_facilities, :area, :id, :facility_name, {include_blank: true}, class: 'select' %>
      <%= f.label :Transfer_From_Other%>
      <%= f.text_field :transfer_from_other %>

Si mi pregunta y mis ejemplos no son claros, avíseme y estaré encantado de editarlos.

Respuestas a la pregunta(2)

Su respuesta a la pregunta