【问题标题】:Ruby on Rails looks for css in assets instead of public/stylesheetsRuby on Rails 在资产而不是公共/样式表中寻找 css
【发布时间】:2011-06-17 23:49:04
【问题描述】:

我是 Ruby 新手,使用 ruby​​ 1.9.2P180 和 Rails 3.1.0.rc2

我在 my_app_root/public/stylesheets/screen.css 和我的 application.html.erb 中有“screen.css”

 <%= stylesheet_link_tag 'screen.css', :media => 'screen' %>

根据here 它应该可以工作,但我的 Rails 服务器说:

PagesController#home 处理为 HTML 在布局/应用程序中渲染页面/home.html.erb (0.0ms) 在 4 毫秒内完成 200 次 OK(查看次数:3.6 毫秒 | ActiveRecord:0.0 毫秒)

在 2011-06-18 11:27:53 +1200 开始为 127.0.0.1 获取“/assets/screen.css” 服务资产 /screen.css - 404 Not Found (2ms) (pid 10966)

ActionController::RoutingError (没有路由匹配 [GET] "/assets/screen.css"):

我在这里做错了什么?

提前致谢

【问题讨论】:

    标签: ruby-on-rails css


    【解决方案1】:

    我在这里做错了什么?

    没什么,您只是在使用默认的 3.1 安装,它使用新的基于 sprockets 的资产管道。

    将您的样式表放入 /app/assets/stylesheets 并使用

    <%= stylesheet_link_tag 'application.css' %> 
    

    在你看来

    新管道获取该文件夹中的所有样式表,并自动将它们编译到一个文件中。

    ==

    或者,您可以在 application.rb 中设置关闭新管道

    config.assets.enabled = false
    

    【讨论】:

    • 抱歉劫持,但是可以为每种媒体类型指定不同的资产主机吗? (即 css.mydomain.com、js.mydomain.com、img.mydomain.com)。我们将这样的设置与自定义助手一起使用,但仅使用资产会简化事情。
    • 它的 ruby​​onrails,当然你可以根据内容类型自定义你的主机。研究使用 proc 函数。 api.rubyonrails.org/classes/ActionView/Helpers/… 显示的示例使用是否关闭 ssl 的情况,但您可以检查请求以查看正在提供哪种文件并重定向到正确的主机...
    • 哈哈,“ruby on rails”!=“当然你可以自定义”,根据我的经验;)更多的是相反的。感谢您的链接;很有帮助! :)
    • @d11wtq:虽然 Rails(和 ruby​​ 就这点而言)确实更喜欢约定而不是配置,但我还没有遇到过简单配置或类/方法覆盖都没有的情况是一个优雅的解决方案。我会给你这么多,除了通过 rdocs 阅读源代码中的内联 cmets 之外,并不是 Ruby/Rails 中的所有内容都有很好的文档记录。
    • 必须同意,虽然并不总是那么容易,但您可以自定义一切。有时它需要一个猴子补丁,但至少可以选择。非常令人耳目一新,来自 ASP.NET 背景,其中 Microsoft 密封每个课程,所以如果你不喜欢它,你就是 SOL...
    猜你喜欢
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    相关资源
    最近更新 更多