Я хочу обновить модель с помощью обновления контроллера #. Я хочу сделать это через AJAX и не иметь скрытую форму или любые элементы DOM, чтобы синхронизировать с данными JS.Rails controller # update, дающий неверный тип для параметров
Как я могу отправить данные на обновление контроллера # через jQuery ajax?
Мои JS:
$.ajax({
type: "PATCH",
url: "/uploads/" + current_upload.id,
data: {
"upload[user]": user.id,
"upload[upload]": current_upload.id
}
}).done(function(msg) {
alert("Data Saved: " + msg);
});
Мой контроллер:
def update
@upload = Upload.find(params[:id])
# update the model.
if @upload.update(upload_params)
redirect_to @post
else
render 'edit'
end
end
private
def upload_params
# permit! allows all attributes.
params.require(:upload).permit(:user)
end
Ошибка:
User(#70101060061080) expected, got String(#70101055761460)
интересно, Rails также делает 'upload' (upload instance) из' upload [upload] '? Ahhh так в 'params.require()' Я не указываю строковые значения, которые можно передать, я указываю типы объектов. Это верно? – EmilyNeedsToCode
ну да, потому что ваш контроллер вызывает '@ upload.update (upload_params)' (так передавая параметры, которые вы отправляете, в метод обновления). Нет, вы не указываете типы пользователей, вы указываете ключи params. – sevenseacat
Итак, ошибка исчезла, но поле user_id в моем «uploads» db не обновляется. Есть ли что-то еще «волшебное» в Rails, преобразующем мой параметр «user_id»? – EmilyNeedsToCode