Я хочу, чтобы загрузить пользовательский аватар (carrierwave), используя пользовательское действие так:Response для формы с пользовательскими действиями с использованием Ajax
= form_for user, url: update_user_avatar_path(id: user.id), :html => {:class => "up-cl-ava-form", data: {type: :json}, novalidate: true, method: :put}, remote: true do |f|
= f.file_field :avatar_picture
= f.submit "Update", remote: true
В UsersController
def update_user_avatar
@user = User.find(params[:id]) || current_user
respond_to do |format|
if @user.update_attributes!(avatar_picture: params[:user][:avatar_picture])
format.json { render json: {}, status: :ok}
else
format.json { render json: {}, status: :unprocessable_entity}
end
end
end
Params in #update_user_avatar
{ "utf8" => "✓", "_method" => "положить", "authenticity_token" => "BPGeN5mpRCYwIco1YSsBx6IT7MfIBOdSlwS9Y5WJZeU =", "пользователь" => { "avatar_picture" => #>}, " совершить "=>" Обновить», "ID"=> "30", "действие"=> "update_user_avatar", "контроллер"=> "пользователи"}
запрос
.... "CONTENT_TYPE" => "multipart/form-data; граница = ---- WebKitFormBoundaryvz51HFYrromiuTS7" ....
В моей JS
$(document).ready(function(){
$(".up-cl-ava-form").on("ajax:success", function(){
alert("success")
});
});
Проблема здесь состоит в том, что изображение правильно загружена, но сайт перенаправляет lvh.me : 3000/update_user_avatar ID = 30 (пустая страница), вместо пребывания в одной и той же точки зрения
Это я и искал. ** JQuery UJS не поддерживает удаленные загрузки файлов ** –