1

我有一个用于创建图像的远程表单。每次更改文件输入时,它都会提交表单。

<%= 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 输出。怎么会这样?表单是远程的:true,所以它不应该重定向对吗?我只希望数据可用于不引人注目的回调。

我怎样才能让它工作?

编辑:application.js

//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_tree .
4

1 回答 1

1

确保您包含帮助程序 javascript:

//= require jquery_ujs

这应该在视图引用的 Javascript 文件之一中(或者您可以将其放在 application.js 中,假设您没有修改任何会阻止 application.js 被包含的内容)。如果不是这样,请使用 Firebug 或类似的开发人员工具并查找 JavaScript 错误或警告。

于 2012-10-31T17:00:29.500 回答