简体   繁体   中英

ActionController::RoutingError (No route matches [GET] “/assets/images/logo.png”):

Im getting below error in the development mode, I tried every solution and nothing worked for me. Im using rails v 5.1.4 and ruby v 2.4.1

Started GET "/assets/images/logo.png" for ::1 at 2021-03-05 01:07:59 -0700
  
ActionController::RoutingError (No route matches [GET] "/assets/images/logo.png"):
  
actionpack (5.1.5) lib/action_dispatch/middleware/debug_exceptions.rb:63:in `call'
actionpack (5.1.5) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
railties (5.1.5) lib/rails/rack/logger.rb:36:in `call_app'
railties (5.1.5) lib/rails/rack/logger.rb:24:in `block in call'
activesupport (5.1.5) lib/active_support/tagged_logging.rb:69:in `block in tagged'
activesupport (5.1.5) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (5.1.5) lib/active_support/tagged_logging.rb:69:in `tagged'
railties (5.1.5) lib/rails/rack/logger.rb:24:in `call'

here is my folder structure在此处输入图像描述

here is view file app/views/homepage/index.html.erb

<div style="background-image: url('/assets/images/logo.png')"></div>

here is assets.rb file config/initializers/assets.rb

Rails.application.config.assets.version = '1.0'
Rails.application.config.assets.paths << Rails.root.join('node_modules')
Rails.application.config.assets.paths << Rails.root.join("app", "assets", "assets","images")

here is application.rb file config/application.rb

require_relative 'boot'
require "rails"
require "active_model/railtie"
require "active_job/railtie"
require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "action_cable/engine"
require "sprockets/railtie"
require "rails/test_unit/railtie"
Bundler.require(*Rails.groups)
module BorroupMobile
  class Application < Rails::Application
    config.load_defaults 5.1
    config.action_mailer.default_url_options = { :host => 'localhost' }
    config.session_store :cookie_store, key: '_interslice_session'
    config.middleware.use ActionDispatch::Cookies # Required for all session management
    config.middleware.use ActionDispatch::Session::CookieStore, config.session_options
    config.assets.enable=true
    config.api_only = true
    config.middleware.use ActionDispatch::Flash
    config.middleware.use(Rack::MethodOverride)
  end
end

in the production.rb file i added below lines config/environments/production.rb

config.assets.compile = true
config.assets.digest = false
config.serve_static_assets = false

in the production.rb file i added below lines config/environments/production.rb

config.assets.compile = true
config.assets.digest = false
config.serve_static_assets = false

I ran rake assets:precompile nothing worked for me

You could use asset_path :

<div style="background-image: url('#{asset_path('logo.png')}')"></div>

<!-- asset_path('logo.png') will generate real path
=> /assets/logo-6d4bec8ad65e03a460fea1e6b84d71b.png -->

Or you could use image-url within a scss file:

/* assets/css/homepage.scss */
#homepage {
  background-image: image-url('logo.png');
}

You can try this:

background-image: image-url('logo.png') no-repeat;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM