jquery – 使用POST函数的Rails ajax:为什么模板丢失了?

前端之家收集整理的这篇文章主要介绍了jquery – 使用POST函数的Rails ajax:为什么模板丢失了?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用ajax提交完成头像上传和裁剪.

我通过ajax发送base64图像然后我将我的图像转换为carrierwave.

一切正常,除了ajax响应:模板缺失.

这是我的ajax电话:

$.ajax({
  type: "post",dataType: "json",url: "/profile/update_avatar",data: { image: canvas.toDataURL() }
})
.done(function(data) {

  // You can pull the image URL using data.url,e.g.:
  $('.user-image').html('<img src="'+data.url+'" />');

});

这是我的控制器:

def update_avatar
respond_to do |format|
  if current_user.update_cropped_avatar(params[:image])
    format.js
    format.html { render :nothing => true,:notice => 'Update SUCCESSFUL!' }
  else
    format.html { render :action => "edit" }
    format.json { render :json => current_user.errors,:status => :unprocessable_entity }
  end
end

结束

我不需要渲染模板……但错误是:

Missing template profiles/update_avatar,application/update_avatar with {:locale=>[:it],:formats=>[:js,:html],:handlers=>[:erb,:builder,:raw,:ruby,:coffee,:haml]}.

为什么?

解决方法

问题将是你使用:
respond_to do |format|
    format.js

我知道你把JSON发送到Rails,但是当你的头像正确发送时,你似乎只处理标准的script dataType.您对format.js的使用基本上导致rails在您的views文件夹中查找action_name.js.erb – 因此您的模板错误

有很多方法可以解决这个问题,包括

respond_to do |format|
    format.js { render nothing: true }

固定

在与Roberto聊天聊天之后,这对他有用:

def update_avatar 
    respond_to do |format| 
        if current_user.update_cropped_avatar(params[:image]) 
            format.json { render :json => current_user.profile.avatar_url,:status => 200 } 
            format.html { render :nothing => true,:notice => 'Update SUCCESSFUL!' } 
        else 
            format.html { render :action => "edit" } 
            format.json { render :json => current_user.errors,:status => :unprocessable_entity } 
        end 
    end 
end

猜你在找的jQuery相关文章