我有一个用于创建图像的远程表单。每次更改文件输入时,都会提交表单。
<%= form_for Image.new, remote: true, multipart: true do |f| %>
<!-- form omitted -->
<% end %>
自动提交:
$("#new_image input[type=file]").on("change", function() {
$("#new_image").submit();
});
创建图像并在图像控制器中渲染json就好了:
def create
@image = Image.new params[:image]
if @image.save
render json: @image, status: :success
else
render json: @image.errors, status: :unprocessable_entity
end
end
问题是用户被重定向到json输出。怎么会发生这种情况?表单是远程的:是的,所以它不应该重定向吗?我只是希望数据可用于不引人注目的回调。
如何让它发挥作用?
修改:application.js
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_tree .
答案 0 :(得分:1)
确保您包含帮助程序javascript:
//= require jquery_ujs
这应该是视图引用的一个Javascript文件(或者您可以将它放在application.js中,假设您没有修改任何会阻止application.js被包含的内容)。 如果不是这样,请使用Firebug或类似的开发人员工具,查找javascript错误或警告。