У меня есть следующий шаблон, delinquent_statuses.html.erb
:
<h2>Edit Delinquent Statuses</h2>
<script>
$(document).ready(function() {
$("select#resident_id").change(function() {
$("#unit_id").val(this.value);
this.form.submit();
});
$("select#unit_id").change(function() {
$("#resident_id").val(this.value);
this.form.submit();
});
});
</script>
<%= render partial: 'shared/tcpf_selector', locals: {ctrlr: 'leases', action: 'delinquent_statuses'} %>
<hr>
<%= form_with url: 'dq_get_delinquent', remote: true do |f| %>
<table>
<tr>
<td><%= f.label 'Name' %></td>
<td><%= f.select(:resident_id, options_for_select(@resident_selects),
{ include_blank: true, tabindex: 1, required: 'required'}) %></td>
<td><%= f.label 'Apt #' %></td>
<td><%= f.select(:unit_id, options_for_select(@unit_selects),
{ include_blank: true, tabindex: 2}) %></td>
</tr>
</table>
<% end %>
<div id="dq_selector_field">
</div>
Клиент хочет, чтобы селекторы для @resident_selects
и @unit_selects
синхронизировались, поэтому их значения - это идентификаторы третьей связанной модели,Lease
. Чтобы синхронизировать селекторы, мне нужен приведенный выше javascript.
Проблема в том, что я не могу получить respond_to
, чтобы распознать формат, когда я отправляю форму через js. Метод контроллера выглядит следующим образом (и я знаю, что есть другие проблемы со стилем, но по одному):
def dq_get_delinquent
id = params.dig(:resident_id) || params.dig(:unit_id)
@lease = Lease.find_by_id(id)
respond_to do |format|
if @lease.present?
format.js
format.json
else
redirect_to '/'
end
end
end
Но если я пытаюсь запустить это, я получаю ошибку:
ActionController :: UnknownFormat в LeasesController # dq_get_delinquent
Я знаю, что js (и, следовательно, 'text / javascript') не неизвестен, потому что другие формы успешно его используют. Это единственная форма, которую мне нужно отправить таким способом, и я не знаю, как предоставить leases#dq_get_delinquent
информацию, которая ему нужна, чтобы он знал, что я ищу шаблон javascript.
(Я пытался использовать render
, чтобы отобразить ds_get_delinquent
, но это заменяет всю страницу: не то, что я хочу.)
Кто-нибудь знает способ удовлетворения respond_to
отне-Rails-сгенерированное событие submit()
событие?
(ОБНОВЛЕНИЕ: я попытался добавить request.format = :js
, и, по крайней мере, он распознает формат, но теперь Rails просто переписывает экран и печатает интерполированное .js.erb
наона.)