o..*_*..o 1 ruby-on-rails heroku
在我的 rails 应用程序的 application_layout.html.rb 中,我正在加载控制器特定的 javascript:
<%= javascript_include_tag params[:controller] if Rails.application.assets_manifest.find_sources("#{params[:controller]}.js").any? %>
Run Code Online (Sandbox Code Playgroud)
在我部署到 Heroku 之前,它可以正常工作。比我得到这个错误:
ActionView::Template::Error (undefined method `find_asset' for nil:NilClass)
Run Code Online (Sandbox Code Playgroud)
当我尝试调用从#find_sources 返回的对象上的任何方法时,我遇到了同样的错误。
编辑:
<%= Rails.application.assets_manifest.find_sources("#{params[:controller]}.js") %>
Run Code Online (Sandbox Code Playgroud)
返回 #<Enumerator:0x007fda655a17b0>
任何的想法?
谢谢
它不起作用,因为在生产中有一个静态清单文件而在开发中没有(通常,它取决于环境配置)。您可以创建一个辅助方法来根据当前环境配置进行不同的检查:
def asset_exist?(path)
if Rails.configuration.assets.compile
Rails.application.precompiled_assets.include? path
else
Rails.application.assets_manifest.assets[path].present?
end
end
Run Code Online (Sandbox Code Playgroud)
请检查此问题以获取更多详细信息。
| 归档时间: |
|
| 查看次数: |
924 次 |
| 最近记录: |