这可能不是一个常见问题,但我确实需要此功能。
在我的控制器中,我想渲染一个名为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文件的内容。
答案 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? %>