Rails 3 原型渲染:更新响应具有 text/html 内容类型

2024-01-30

我正在尝试让一些用原型和 Rails 2.3.11 编写的 RJS 代码在 Rails 3.2.1 中工作

我有prototype-rails宝石,所以render :update do |page|有效,我正在使用一个表单:remote => true向控制器发送 ajax 请求,并且 javascript 看起来生成正常。

但是,响应标头中的内容类型是text/html; charset=utf-8,这应该是text/javascript.

在控制器中我这样称呼它:

render :update do |page|
    if @step.errors.empty?
        page.redirect_to how_to_path(@article.id)
    else
        page.replace_html 'add_step_form', :partial => 'how_to/add_step', :locals => {:step => @step, :altered => true}
    end
end

似乎生成了window.location.href... and Element.update...代码正常,但由于内容类型错误而未执行。

我可能做错了什么会导致这种情况吗?我需要一个能够使 rjs 与原型一起工作的解决方案。将来可能会使用 jQuery,但现在无法进行更改。

update:我尝试了一些其他编写代码的方法,包括指定:content_type => "text/javascript" in render,将其包裹在respond_to块与format.js,并将其重写为js.erb文件,但仍然全部返回text/html作为响应标头中的内容类型。

update我想出了如何通过添加来获得预期的行为headers["Content-Type"] = "text/javascript; charset=utf-8"在控制器之前render,但是如果我必须在每个 RJS 实例之前显式添加它,那么这似乎并不是最好的方法。如果有人能想出一个更干净的解决方案,我想要一个。

update事实证明我们有一个before_filter在将内容类型设置为 text/html 的每个请求之前运行。我删除了这个,并且能够删除所有headers["Content-Type"]我添加的代码。它在我的开发环境中有效,但在我们的测试验证环境中无效。事实证明,我们在那里缓存了旧资源,因此验证运行的是原型 1.6.1,而我的本地开发环境是 1.7.0。这导致了rails.js不在验证中编译,因此所有请求都有一个Accepts: text/html代替text/javascript。刷新缓存加载了新版本的原型并解决了问题。


事实证明,我们有一个 before_filter 在每个将内容类型设置为 text/html 的请求之前运行。我删除了它,并且在没有下面的 hack 的情况下它也能工作。

但如果您需要解决方法,这就是我在下面所做的。

我想出的唯一能让这项工作成功的方法就是添加headers["Content-Type"] = "text/javascript; charset=utf-8"之前render :update

headers["Content-Type"] = "text/javascript; charset=utf-8"
render :update do |page|
  if @step.errors.empty?
    page.redirect_to how_to_path(@article.id)
  else
    page.replace_html 'add_step_form', :partial => 'how_to/add_step', :locals => {:step => @step, :altered => true}
  end
end

不幸的是,我必须将它添加到代码中 RJS 所在的每个位置render :update叫做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 3 原型渲染:更新响应具有 text/html 内容类型 的相关文章

随机推荐

  • Delphi 中使用“with”创建的引用对象实例

    有没有办法引用使用 with 语句创建的对象实例 Example with TAnObject Create do begin DoSomething instance end 其中 DoSomething 将使用实例引用 就像将实例从声明
  • 绘制具有平行边而不叠加边的 igraph 图

    我有一个顶点之间有多个边的图 如下所示 IGRAPH U W 5 10 attr id v label v weight e edges 0 1 1 2 3 2 0 1 3 4 1 3 1 0 0 2 3 3 4 3 0 1 1 2 4 e
  • SQS 真的会为每条消息发送多个 S3 PUT 对象记录吗?

    我已经设置了一个 S3 存储桶来将 PUT 对象上的事件发送到 SQS 并且我正在 EB 工作层中处理 SQS 队列 SQS 发送的消息的架构如下 http docs aws amazon com AmazonS3 latest dev n
  • 有没有办法让 Internet Explorer 不缓存特定网站?

    我正在创建一个网页 每当我刷新或从一个页面移动到另一个页面时 它都会继续重新加载缓存值 但我不希望它这样做 因为我正在处理动态数据 来自数据库 因此我希望它在每次刷新或完成任何页面处理时从数据库重新加载值 我的意思不仅仅是清除浏览器缓存 我
  • 仅 CSS 框阴影底部 [重复]

    这个问题在这里已经有答案了 我怎样才能做到这一点 我希望我的元素看起来好像有阴影下划线 我不想要其他 3 面的阴影 做这个 box shadow 0 4px 2px 2px gray 它实际上要简单得多 无论您将模糊设置为 第三个值 将扩散
  • LLVM不生成CFG

    我有程序foo c我用它编译clang c emit llvm foo c o foo bc 它返回一个foo bc 所以 我跑opt dot cfg foo bc为了获得一个 dotCFG 但是 我收到警告 警告 您正在尝试打印位码文件
  • 标准中 override 和 noexcept 的顺序

    override 和 noexcept 的顺序是标准所要求的吗 class Base public virtual void foo class Derived public Base public virtual void foo ove
  • 如何在 ASP.NET MVC 中动态预选 html.DropDownlist 中的项目

    有没有办法在页面加载或发布到服务器时预先选择一个项目 这就是我现在所拥有的 设置 SelectList 的 SelectedValue 属性 或将其作为第二个参数
  • PHP/jQuery/JavaScript 中的免费 OCR 处理 API [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何免费的 PHP OCR API 在 PHP jQuery 或 JavaScript 中有详细
  • 如何在 C 中取消声明(删除)变量?

    就像我们对宏所做的那样 undef SOMEMACRO 我们也可以吗未申报 or deleteC中的变量 这样可以节省大量内存 我知道关于malloc and free 但我想完全删除变量 这样如果我使用printf d a 我应该得到错误
  • 如何将 UTF-8 字符串转换为大写?

    有没有一种可移植的方法将 C 中的 UTF 8 字符串转换为大写 如果没有的话 Linux 的方法是什么 执行此操作的可移植方法是使用 Unicode 感知库 例如ICU http site icu project org 似乎u strT
  • php邮件无法通过smtp.gmail.com发送[重复]

    这个问题在这里已经有答案了 可能的重复 使用 Gmail 的 PHP 邮件 https stackoverflow com questions 36079 php mail using gmail code
  • 如果列表中的任何项目以字符串开头?

    我试图检查列表中的任何项目是否以某个字符串开头 我怎样才能用 for 循环做到这一点 IE anyStartsWith False for item in myList if item startsWith qwerty anyStarts
  • 如何从ContainerRequestContext获取数据来构建DTO对象

    我是春季和球衣的新人 我正在尝试构建一个过滤器来检查请求是否具有正确的参数 这是我要检查的 json 部分 request application 1 Android Mobile version 1 数据元素是我的 VersionDTO
  • Java 8 epoch-millis 时间戳到格式化日期,如何?

    在 Java 8 之前 我习惯于始终将任何与日期 时间相关的内容保留为自纪元以来的毫秒数 并且仅在退出时处理人类可读的日期 时间 即在 UI 或日志文件中 或在解析用户生成的输入时 我认为这对于 Java 8 来说仍然是安全的 现在我正在寻
  • RestKit - 将数组的键路径映射到该数组内部的对象

    我真的很喜欢用 RestKit 0 20 来解析这个特定的响应 addons id 1 name Addon one version 2 id 2 name Addon two version 3 forms id 1 name Form
  • 在 Python 中打印格式正确的 SQLite 表

    我编写了一个 Python 脚本来向表中添加行 我决定如果我也可以使用相同的脚本查看我的表 而不必退出脚本并运行 sqlite3 或切换到另一个 shell 并运行 sqlite3 那就太好了 所以我写下了我期望的内容 它会给我我想要的东西
  • Angular - 单击时使用动态 ID 专注于输入

    有很多类似的问题 但我还没有找到真正的重复问题来回答我的问题 如果我错过了一些东西 我深表歉意 我有一个包含多个输入 按钮的页面 重复相同的组件 并且需要在单击按钮时关注正确的输入 我尝试过 elementRef nativeElement
  • 将文本添加到 MySQL 列名称之前

    假设一个查询例如 SELECT FROM tableA 我怎样才能前置a 每列的名称 例如 如果有一列 用户名 它将在结果中作为 a username 进行访问 EDIT The SELECT username AS a username格
  • Rails 3 原型渲染:更新响应具有 text/html 内容类型

    我正在尝试让一些用原型和 Rails 2 3 11 编写的 RJS 代码在 Rails 3 2 1 中工作 我有prototype rails宝石 所以render update do page 有效 我正在使用一个表单 remote gt