我有一个标准控制器,用于响应HTML、JS和JSON请求:

def picture
  @picture = Picture.new params[:picture]

  respond_to do |format|
    if @picture.save
      format.html do
        logger.debug "In the HTML responder"
        redirect_to @picture
      end
      format.json { render json: @picture, status: :created, location: @picture }
      format.js { render :nothing => true }
    else
      # you get the idea
    end
  end
end

现在,我正试图用$.ajax函数向该控制器发送一个请求(在这种特定情况下,我不能使用:remote => true——我正试图让ajax文件上传工作正常).

$.ajax({
  url: $("form#new_picture").attr("action"),
  type: "POST",
  data: formdata,
  processData: false,
  contentType: false
});

问题是,出于某种原因,我的请求被视为HTML请求.如何告诉rails我需要JS响应?

顺便说一句,我在我的项目中使用jquery_ujs,所以如果需要,我可以访问它提供的方法.我在JS方面做得还不够好,无法调整它来满足我的需要.

推荐答案

这个解决方案不适合我(rails 3.1+coffeescript).在搜索了很多之后,我找到了一个很好的方法,我想与大家分享:

只需在url末尾添加".js".这么简单…;-)

Ruby-on-rails相关问答推荐

Gemfile需要较新版本的依赖项

Trailblazor 操作 -> 集合 :attribute(has_many 通过关联) 与填充器 -> 如何填充 Reform::Form 形式的 slugs 数组?

Rails 4 中的 null_session 和 reset_session 有什么区别?

你如何发布到 Capybara 中的 URL?

在哈姆尔与当地人进行局部渲染?

如何从 Ruby on Rails 应用程序返回正确的 HTTP 错误代码

Rails 3 - Select 包含?

我如何在不同的视图中使用助手

有没有办法在模型而不是视图中使用复数()?

上传图片 Ruby on Rails

对于 Visual Studio 用户来说,最好的 Ruby on Rails 环境是什么?

simple_forms 自定义数据属性

HABTM 关系 - 如何根据关联模型的属性找到记录

使用 SQLite 3 将 RoR 应用程序部署到 Heroku 失败

rmagick 和 OS X Lion

Rails 3 SSL 路由从 https 重定向到 http

Ruby - 合并两个数组并删除重复的值

过滤器在渲染之前但在控制器之后执行?

Rails:如何将日期时间字符串解析为特定时区

如何为 Rails 控制器添加延迟以进行测试?