【问题标题】:Problem rendering vanilla JavaScript in Ruby在 Ruby 中渲染 vanilla JavaScript 时出现问题
【发布时间】:2010-10-20 11:37:53
【问题描述】:

在我的控制器中,我尝试渲染原生 JavaScript,但得到了意想不到的结果。这是代码

class UploadController < ApplicationController

    def index

        render :file => 'app\views\upload\uploadfile.rhtml'

    end

    def uploadFile

        render :js => "alert('Hello Rails');"

       post = DataFile.save(params[:upload])

    end

end

在执行 post = DataFile.save(params[:upload]) 之前期待我应该看到一个警报框,但我看到的是一个下载框。可能是什么问题?

【问题讨论】:

  • 您确定您到达的路线正确吗?你得到什么样的错误?
  • 我没有收到任何错误,但是当我尝试渲染渲染时:js => "alert('Hello Rails');"我正在从我的资源管理器获取下载框

标签: javascript ruby-on-rails rendering


【解决方案1】:

render :js 将发送 MIME 类型为 text/javascript 的数据 浏览器会看到并尝试下载或显示它(我的浏览器 Chromium 将 .js 文件显示为纯文本。)

render :js 确实是为了返回一些 JavaScript,这些 JavaScript 将由该页面上已有的代码处理。

本质上,您可以从 jQuery 进行 AJAX 调用:

$.ajax({
  type: "POST",
  url: "tokens/1/destroy.js",
  data: { _method: 'DELETE', cell: dsrc.id }
});

这是我的一个项目中的一些代码。这里没有定义 dataType,所以 jQuery 智能地“猜测”返回什么类型的数据。它看到它是 MIME-Type:text/javascript 并执行它。如果我们使用您的代码,将会显示一个警告对话框。

本质上,您需要已经加载了一个页面,并且该页面必须等待“vanilla JavaScript”返回。

如果您只想为该特定操作执行一些代码,您只需在模板/视图中使用 javascript_tag 包装它,或者包含一个外部 .js 文件。

【讨论】:

  • Robbie 谢谢,但你能帮我解决这个代码(由我发送)这是我对这个控制器的看法
  • 文件上传

    'uploadFile'},:multipart => true) %>

    :

  • AMIT,我建议查看一些用于处理 javascript 的 railscast:railscasts.com/episodes?search=RJS
猜你喜欢
  • 2020-12-27
  • 1970-01-01
  • 2019-09-03
  • 2016-01-25
  • 2013-07-30
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 2022-10-07
相关资源
最近更新 更多