Предисловие: я новичок в Rails. Также немного нового в JQuery и JSON.
Я в настоящее время рендеринга HTML из моего контроллера как таковой:
def new
@customer = Customer.find(params[:id])
end
Я использую этот экземпляр @customer для установки полей формы. У меня также есть в этой форме два выбранных помощника:
<%= select(:customer, :billing_type_id, BillingType.all.map{ |lk| [lk.name, lk.id] })%>
<%= select(:customer, :account_id, Account.all.map{ |lk| [lk.number, lk.id] }) %>
Оба списка выбора привязаны к моей модели клиента. Модель BillingType принадлежит учетной записи.
После выбора BillingType я хочу автоматически выбрать соответствующую учетную запись. Пользователь имеет право выбрать учетную запись, отличную от учетной записи по умолчанию, поэтому обе модели используются в модели Customer. Целью автоматического выбора учетной записи является исключительно удобство для пользователя.
Моей первой идеей было как-то вернуть BillingType.all.to_json как часть нового действия моего контроллера. Затем, если этот json доступен на клиенте, я могу проанализировать его и подключить событие изменения в JQuery, чтобы выбрать учетную запись по умолчанию при выборе BillingType.
Так что мой вопрос действительно состоит из двух частей:
Каким образом можно выполнить настройку связанной опции выбора?
Независимо от того, каков правильный путь для достижения моей цели, мне теперь любопытно, как одновременно вернуть json AND html из действия контроллера. Я действительно не думаю, что хочу сделать ajax-запрос из моего события загрузки документа, так как это потребует обратной передачи на сервер. Есть ли способ просто отобразить все типы BillingType для тега как json, чтобы я мог ссылаться на него с помощью JQuery и анализировать json? Я чувствую, что хочу сделать что-то вроде этого:
В jquery:
var obj = jQuery.parseJSON($("#billingtypes"));
В поле зрения:
<span id="billingtypes"><%= BillingType.all.to_json %></span>
Возможно, все это неправильно, но я буду очень признателен за понимание того, как справиться с моими двумя проблемами.