Rails远程表单在浏览器中呈现json

时间:2012-10-31 15:21:26

标签: ruby-on-rails ruby-on-rails-3 jquery

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

<%= 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 .

1 个答案:

答案 0 :(得分:1)

确保您包含帮助程序javascript:

//= require jquery_ujs

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