ruby-on-rails - 从 Controller 渲染 js 时使用 Rails Sprockets 指令

标签 ruby-on-rails ruby-on-rails-4 coffeescript asset-pipeline sprockets

我想从 Controller 渲染一个 .js.coffee View ,其中包含 lib/assets/javascripts 目录中的另一个 js 文件:

#= require doc_ready

为什么 View 由 Controller 渲染而不是静态资源?

因为我想通过绝对 URL 引用该文件,所以不会改变。 Rails 4.0 仅编译带有 embed-dc589fbef3832d9c38a4fbbc4b021f59.js 这样的摘要的资源,即使我对脚本进行了更改,我也想使用相同的 url(并且可能会根据时间使缓存文件过期)。

为什么是绝对网址?

因为我想在另一个网站上外部使用该脚本,并且我向该网站的网站管理员提供的代码不得更改。

为什么我要包含 Assets 中的另一个 js?

  1. 保持代码干燥
  2. 需要 simple library模拟 jquery 就绪事件,用于在包含脚本的页面上创建小部件。

我可以通过创建一个渲染 .js.coffee View 的 Controller 操作来实现这一点,该 View 编译并包含库中其他所需的 js 文件,就像 sprocket 编译 Assets 时所做的那样?

最佳答案

像这样使用重定向:

  def show
    redirect_to view_context.javascript_path('embed.js.coffee')
  end

有一种方法可以渲染整个 js 文件:

def show
  render text: Rails.application.assets.find_asset('embed.js.coffee').body
end

关于ruby-on-rails - 从 Controller 渲染 js 时使用 Rails Sprockets 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23565858/

相关文章:

ruby-on-rails - 使用 simple_form Bootstrap 输入组包装器

ruby-on-rails - 如何让所有 Android 设备制造商在 Ruby 中使用 WURFL?

javascript - JS运行环境

ruby-on-rails - Rails 4.2.5 在 SerializationTypeMismatch 之后将值重新分配给序列化字段

javascript - 在没有 coffeescript 的 rails 3.2 中使用 javascript

javascript - 我可以从 CoffeeScript 文件调用 Javascript 函数吗?

ruby-on-rails - 如何在 Rails 代码中链接社交媒体图片

javascript - CSS 样式不适用于 jquery

ruby-on-rails - :conditions on a belongs_to association?的目的是什么

ruby-on-rails-4 - 获取 Capistrano 3 中设置变量的列表