Rails - 渲染资产javascript

时间:2014-06-23 17:22:41

标签: javascript ruby-on-rails-4 assets

有没有机会呈现预编译的javascript文件?普通文件没有问题:

def iframe_communication
  render file: "/app/assets/javascripts/iframe_communication_module.js"
end

我尝试assets_path或在视图中将javascript_include_tag包含在内,但没有成功。

为了澄清,我不想将脚本添加到我的视图中。我尝试渲染javascript文件以进行外部访问(从其他域添加到<script>标记中)。

更新

  • render file: "..."按预期显示文件,但未编译版本
  • assets_path "/app/assets/javascripts/iframe_communication_module.js"返回"/app/assets/javascripts/iframe_communication_module.js"而不是已编译资产的路径
  • javascript_include_tag按预期加载脚本(Not Rendering)

Rails 4资产管道将所有内容编译成一个文件,是否有机会从中获取单个文件?
或者是手动编译它的更好方法?

更新2
发现thisassets_path没有达到我的预期。它只是前缀和附加:

asset_path "application.js" # => /application.js  
asset_path "application", type: :javascript # => /javascripts/application.js

1 个答案:

答案 0 :(得分:2)

找到了一个有效的解决方案:

我不需要普通资产管道中的文件。所以添加

//= stub iframe_communication_module

apps/assets/javascript/application.js

要预编译文件,请自动添加

config.assets.precompile += %w( iframe_communication_module.js )

config\application.rb

要通过控制器添加

来访问它
redirect_to ActionController::Base.helpers.javascript_path("iframe_communication_module")

到控制器。