-1

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

在我的控制器中,我想渲染一个 JavaScript 文件,命名ApplicationLike.js如下:

// 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动作,我想渲染 precompiled 的 CONTENTS ApplicationLike.js,因为它将用作src以下属性:

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

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

我不确定你们是否明白我在说什么。

我用谷歌搜索了超过 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.jsJavaScript 文件的内容。

4

1 回答 1

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? %>
于 2013-07-20T08:11:48.693 回答