【问题标题】:javascript_include_tag "directory/file" results in incorrect path for //= require assetsjavascript_include_tag "directory/file" 导致 //= 需要资产的路径不正确
【发布时间】:2013-05-25 18:36:38
【问题描述】:

我想使用与/app/assets/javascripts/application.js 不同的文件中的//= require <lib>。这会导致资产编译错误,但问题是路径不正确。我做了一个简化的项目,显示了https://github.com/rusanu/test-ember 上的问题。

layout

<head>
  <title>TestEmber</title>
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= yield :head %>
  <%= csrf_meta_tags %>
</head>

view

<%= content_for :head do %>
<%= javascript_include_tag "dashboard/dashboard", :cache => 'dashboard' %>
<% end %>

在我的dashboard/dashboard.js:

//= require handlebars
//= require ember
//= require ember-data
//= require_self

这会导致错误:

Showing /home/rremus/test-ember/app/views/dashboard/show.html.erb where line #2 raised:

No such file or directory - Asset file not found at '/home/rremus/test-ember/public/home/rremus/.rvm/gems/ruby-2.0.0-p0/gems/handlebars-source-1.0.0.rc4/dist/handlebars.js'
Extracted source (around line #2):

1: <%= content_for :head do %>
2: <%= javascript_include_tag "dashboard", :cache => 'dashboard' %>
3: <% end %>
4: 
5: <h1>Dashboard#show</h1>

注意资产路径如何由项目公共目录 (/home/rremus/test-ember/public) 组成,然后附加正确的资产路径 (/home/rremus/.rvm/...),导致路径不正确。

【问题讨论】:

    标签: ruby-on-rails ruby asset-pipeline sprockets


    【解决方案1】:

    我的猜测是,在这种情况下,基于Rails guide for the asset pipeline,您必须做一些特殊的操作才能使其与缓存指令一起使用。

    如果你放弃缓存指令并依赖预编译来处理文件组合,那么一切似乎都没有错误。

    【讨论】:

    • 确实,删除缓存指令可以解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多