2011-11-30 11 views
16

私はproduction_asset_pathに問題があります。それはビーイングを終わる開発でasset_path in scss file rails

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

:生産、それの出力で

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

私は、次のコードを持っている3.1.1

#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 

レール次のとおり:

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

私は完全に迷っていますか?

ありがとうございました。

答えて

23

これは正しく見えません:あなたはasset_pathヘルパーを使用したい場合は

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

、それは

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

と作るERBタグ(<%の%>)内で実行する必要がありますファイル名を正しく指定してください。つまり、example_filename.css.erb


UPDATE:申し訳ありませんが、私はあなたがCSSではなくSASSを使用していたことに気付きませんでした。私の上記の答えはあなたが必要とするものではありません。

代わりにこれを試してみてください:

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

すなわち、私はそれが私のカピストラーノ展開スクリプトで起こっているはい

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

+0

ありがとうございましたありがとうございました! –

0

rake assets:precompile? デフォルトでは、Railsは本番環境のアセットをコンパイルしません。推奨されるワークフローは、展開の一部としてアセットをコンパイルすることです。

+0

を強調していない、資産パスヘルパーはSASSにハイフンを使用していますね。 –