Создайте раскрывающийся список для поля, не входящего в модель

Я создаю каскадный раскрывающийся список для выбора городов в моем представлении, поэтому мне нужно создать первый, чтобы выбрать штат, а второй будет динамически заполняться через AJAX.

Как я могу создать первый, учитывая, что у меня нет поля state_id в моей модели представления (только city_id)?

И при загрузке представления редактирования, как я могу загрузить тот же раскрывающийся список и выбрать правильный вариант, даже не имея этого значения?

ОБНОВИТЬ

Для лучшего понимания того, что у меня есть и что мне нужно, вот еще немного информации.

У меня есть 3 таблицы:

Идентификатор состояния, название, аббревиатура

Идентификатор города, название, state_id

Идентификатор пациента, имя, city_id

Идея состоит в том, чтобы раскрывающийся список состояний загружался автоматически при редактировании или создании нового пациента, а раскрывающийся список городов будет загружаться при выборе элемента в раскрывающемся списке состояний.

Я пытался использовать этот код на мой взгляд:

<div class="row">
        <div class="col-md-4">
          <%= f.input :state, collection: @states %>
        </div>
        <div class="col-md-5">
          <%= f.input :city_id %>
        </div>
      </div>

Однако :state не существует, поэтому возникает ошибка.


person Juliano Nunes Silva Oliveira    schedule 10.04.2016    source источник
comment
вы всегда можете использовать attr_eccessor для использования полей, не привязанных к модели, но если у вас нет штата... как вы сможете заселить города, принадлежащие этому штату?   -  person trh    schedule 10.04.2016
comment
Я добавил больше информации, надеюсь, это поможет объяснить сценарий   -  person Juliano Nunes Silva Oliveira    schedule 11.04.2016


Ответы (1)


Вы всегда можете сделать его отдельным полем выбора, привязанным к событию jQuery, которое содержит данные о состоянии, например:

#Form

<select id="state_select">
    <option value="IL">Illinois</option>
    <option value="CA">California</option>
</select>

<%= label :city %>
<%= select :city, options_for_select([]) %>

#In Script
$("#state_select").on("change", function(ev) {

    //Set the city based on the state and append it to / overwrite the empty array in cities       

})
person Zubatman    schedule 12.04.2016