如何呈现预编译的JavaScript文件的内容

时间:2013-07-20 07:39:02

标签: javascript ruby-on-rails rendering

这可能不是一个常见问题,但我确实需要此功能。

在我的控制器中,我想渲染一个名为ApplicationLike.js的JavaScript文件,其中包含以下内容:

// This is a manifest file that'll be compiled into including all the files listed below.
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
// be included in the compiled file accessible from http://example.com/assets/application.js
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
//= require rr/lib/jquery-1.7.2.min.js
//= (other requires)

然后在我的控制器中,有一个inject操作,我想渲染预编译ApplicationLike.js的内容,因为它将用作以下src属性:

<script src="//localhost:3000/app/inject.js/"></script>

我们无法使用javascript_include_tag,因为它会包含javascript标记<script type="text/javascript"></script>,这会导致语法错误,因为我们只需要上面src属性的PURE JavaScript内容ALREADY-EXISTING <script>标签。

我不确定你们是否理解我在说什么。

我用Google搜索超过5或8个小时,没有运气。

我正在使用Rails 3.2和Ruby 1.9.3

注意:redirect_to /assets/ApplicationLike.js可以工作,但我需要渲染更多包含动态Ruby变量的JavaScript代码(例如current_user.id)。

但是:当然,我们可以使用名为inject.js.erb的视图,其中包含ApplicationLike.js的内容和我提到的更多JavaScript代码行。我只是不知道如何呈现预编译的ApplicationLike.js JavaScript文件的内容。

1 个答案:

答案 0 :(得分:0)

您应该只需阅读并显示其内容,就像这样......

<%= File.open(Rails.root.join('app' , 'inject.js'), 'rb').read %>

如果您想要编译的内容,请尝试以下方法:

<% files = Dir[Rails.root.join('public' , 'assets'), '*.js'].keep_if {|f| f =~ /application-\w{32}\.js/i } %>
<%= File.open(files.first, 'rb').read if files.present? %>