У меня есть стандартное приложение Rails с предварительно заполненной вложенной формой.У меня есть выборка на родительской модели, которая, когда пользователь изменяет контекст вложенных элементов, и они должны быть очищены и повторно заполнены.
Я использовал StimulusJS и хотел что-то вроде этого:
import { Controller } from "stimulus"
export default class extends Controller {
static targets = [ "budgetCode", "body", "template" ]
connect() {
}
budget_code_changed(event) {
document.getElementById('budget_items').getElementsByTagName('tbody')[0].innerHTML = '';
const url = '/budget_code_items/budget?budget_code_id=' + this.budgetCodeTarget.value;
Rails.ajax({
url: url,
success: function(data) {
let row;
var content = this.templateTarget.innerHTML
for (let i = 0; i < data.length; i++) {
this.bodyTarget.insertAdjacentHTML('beforeend', content)
}
}
})
}
}
Я приближаюсь - когда я меняю выбор, строки удаляются.Я могу вручную вставить одну новую строку с этим:
var content = this.templateTarget.innerHTML
this.bodyTarget.insertAdjacentHTML('beforeend', content)
, как я определил с моей новой структурой строки.
Проблема, которую я, похоже, имею, заключается в том, чтобы встроить вызов Stimulus внутрифункция Rails.ajax.Я получаю Uncaught TypeError: Невозможно прочитать свойство 'innerHTML' из неопределенных ошибок.Я уверен, что это проблема типа переменной области.Javascript не является моим сильным навыком, поэтому я подозреваю, что упускаю что-то маленькое, что легко исправить.
Вопрос по теме:
В то же время вВ одну из ячеек столбца моего шаблона мне нужно добавить текст и установить значение скрытого ввода данных из этого вызова Rails.ajax.Я, вероятно, могу понять это самостоятельно, но если кто-то может добавить к этой проблеме стороны, это будет оценено.