Я застрял в этой серверной проблеме и не могу понять, почему она не определена. Идентификатор передается в params в начале функции handledFormSubmit
, но когда поле передается в const и определяется как const field = Field.findyById(id);
=>, выход поля тогда не определен.
Почему он теряет свою ценность? (прикрепленный снимок экрана события в DOM ниже для получения дополнительной информации)
ActionController :: ParameterMissing (параметр отсутствует или значение пусто: поле):
Контроллер:
def index
@fields = Field.all
render json: @fields
end
def update
@field = Field.find_by(id: params[:id])
@field.update(field_params)
if @field.save
render json: @field, status: :accepted
else
render json: { errors: @field.errors.full_messages }, status: :unprocessible_entity
end
end
private
def field_params
params.require(:field).permit(:id, :name, :coordinates, :locations)
end
Адаптер:
fetchFields() {
return this.get(`${this.baseUrl}/fields`);
}
updateField(id, input) {
return this.patch(`${this.baseUrl}/fields/${id}`, input);
}
get(url) {
return fetch(url).then(res => res.json());
}
patch(url, input) {
return fetch(url, {
method: 'PATCH',
headers: this.headers,
input: JSON.stringify(input),
}).then(res => res.json());
}
Приложение:
handleFormSubmit(e) {
e.preventDefault();
const id = e.target.dataset.id;
const field = Field.findById(id);
const coordinates= e.target.querySelector('input').value
const inputJSON = { name, coordinates };
this.adapter.updateField(field.id, inputJSON).then(updatedField => {
const field = Field.findById(updatedField.id);
field.update(updatedField);
this.addFields();
});
}
handleEditClick(e) {
const id = parseInt(e.target.dataset.id);
const field = Field.findById(id);
document.querySelector('#update').innerHTML = field.renderUpdateForm();
}
изображение консоли разработчика