如何使用jQuery-File-Upload和Rails 4在更新动作中渲染javascript



我使用jQuery-File-Upload,它允许AJAX-y文件上传。我用它为用户改变他们的头像图像,而无需整个页面重新加载。这在RailsCast 381中有介绍,但我无法让它工作。用户可以在编辑/更新操作中通过选择要上传的新文件来完成此操作。这发生在authors/:id/edit

我的javascript:

$(document).ready(function(){
  $('#image-form').fileupload();
});

我在Chrome浏览器内观看网络选项卡,当我"选择文件"时,一个POST动作被触发,运行"authors#update"动作。里面有这样的代码:

@author.update(author_params)

更新代码更新数据库中的图像文件。在update.js.erb中,我尝试放入以下代码:

$('#image').html("<%= @author.image_url %>");

但是它永远不会执行。我知道更新动作内的代码执行,因为当我在authors/:id/edit刷新页面时,出现了新的图像。但我想让它在飞行中发生。但我只是不明白为什么update.js.erb不被调用。

明白了。Rails将javascript响应封装在一个布局中。解决方案是在我的更新操作中:

respond_to do |format|
  format.js { render layout: false }
end

最新更新