2011-11-30 32 views
16

Tôi gặp sự cố với asset_path trong sản xuất. Rails 3.1.1asset_path trong đường dẫn tệp scss

#config/environments/development.rb 
Scc::Application.configure do 
    # Settings specified here will take precedence over those in config/application.rb 

    # In the development environment your application's code is reloaded on 
    # every request. This slows down response time but is perfect for development 
    # since you don't have to restart the web server when you make code changes. 
    config.cache_classes = false 

    # Log error messages when you accidentally call methods on nil. 
    config.whiny_nils = true 

    # Show full error reports and disable caching 
    config.consider_all_requests_local  = true 
    config.action_controller.perform_caching = false 

    # Don't care if the mailer can't send 
    config.action_mailer.raise_delivery_errors = false 

    # Print deprecation notices to the Rails logger 
    config.active_support.deprecation = :log 
    config.action_mailer.default_url_options = { :host => 'localhost:3000' } 

    # Only use best-standards-support built into browsers 
    config.action_dispatch.best_standards_support = :builtin 

    # Do not compress assets 
    config.assets.compress = false 

    # Expands the lines which load the assets 
    config.assets.debug = true 
end 

#config/environments/production.rb 
Scc::Application.configure do 
    # Settings specified here will take precedence over those in config/application.rb 

    # Code is not reloaded between requests 
    config.cache_classes = true 

    # Full error reports are disabled and caching is turned on 
    config.consider_all_requests_local  = false 
    config.action_controller.perform_caching = true 

    # Disable Rails's static asset server (Apache or nginx will already do this) 
    config.serve_static_assets = false 

    # Compress JavaScripts and CSS 
    config.assets.compress = true 

    # Don't fallback to assets pipeline if a precompiled asset is missed 
    config.assets.compile = false 

    # Generate digests for assets URLs 
    config.assets.digest = true 

    # Defaults to Rails.root.join("public/assets") 
    # config.assets.manifest = YOUR_PATH 

    # Specifies the header that your server uses for sending files 
    # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache 
    # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx 

    # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. 
    # config.force_ssl = true 

    # See everything in the log (default is :info) 
    # config.log_level = :debug 

    # Use a different logger for distributed setups 
    # config.logger = SyslogLogger.new 

    # Use a different cache store in production 
    # config.cache_store = :mem_cache_store 

    # Enable serving of images, stylesheets, and JavaScripts from an asset server 
    # config.action_controller.asset_host = "http://assets.example.com" 

    # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) 
    # config.assets.precompile += %w(search.js) 

    # Disable delivery errors, bad email addresses will be ignored 
    # config.action_mailer.raise_delivery_errors = false 

    # Enable threaded mode 
    # config.threadsafe! 

    # Enable locale fallbacks for I18n (makes lookups for any locale fall back to 
    # the I18n.default_locale when a translation can not be found) 
    config.i18n.fallbacks = true 

    # Send deprecation notices to registered listeners 
    config.active_support.deprecation = :notify 
end 

Tôi có đoạn mã sau:

.right-bar-filler{ 
    background:url(asset_path('right_bar_filler.jpg', image)) repeat-y; 
    padding-top:0px; 
} 

Trong phát triển nó kết thúc hạnh phúc:

.right-bar-filler { 
    background: url("/assets/right_bar_filler.jpg") repeat-y; 
    padding-top: 0px; 
} 

Trong sản xuất nó ra như:

.right-bar-filler { 
    background: url(asset_path("right_bar_filler.jpg", image)) repeat-y; 
    padding-top: 0px; 
} 

Tôi hoàn toàn thiếu gì?

Cảm ơn bạn đã được trợ giúp.

Trả lời

23

này không giống chính xác:

.right-bar-filler{ 
    background:url(asset_path('right_bar_filler.jpg', image)) repeat-y; 
    padding-top:0px; 
} 

Nếu bạn muốn sử dụng asset_path helper, nó cần phải chạy bên trong các thẻ ERB (<%%>)

.right-bar-filler{ 
    background:url(<%= asset_path('right_bar_filler.jpg', image) %>) repeat-y; 
    padding-top:0px; 
} 

và làm đảm bảo bạn đặt tên tệp chính xác, tức là example_filename.css.erb


CẬP NHẬT: Xin lỗi, tôi không nhận thấy bạn đang sử dụng SASS, không phải CSS. Câu trả lời trên của tôi không phải là những gì bạn cần.

Hãy thử điều này thay vì:

.right-bar-filler{ 
    background:url(asset-path('right_bar_filler.jpg', image)) repeat-y; 
    padding-top:0px; 
} 

Tức là Tôi nghĩ rằng con đường tài sản helper sử dụng dấu gạch nối trong Sass, không nhấn

http://rubydoc.info/github/petebrowne/sprockets-sass/master/Sprockets/Sass/Functions

+0

Điều đó làm việc Cảm ơn bạn! –

0

Bạn đã cào tài sản: biên dịch trước? Theo mặc định, Rails sẽ không biên dịch nội dung trong sản xuất. Luồng công việc được đề xuất là biên dịch nội dung như là một phần của triển khai của bạn.

+0

Có mà đang xảy ra ở Capistrano tôi triển khai kịch bản. –

Các vấn đề liên quan