Routingerror nella cartella JavaScript dopo l'aggiornamento dalle rotaie 3.1 ai binari 3.2

StackOverflow https://stackoverflow.com/questions/9363800

  •  28-10-2019
  •  | 
  •  

Domanda

Ho appena aggiornato a Rails 3.2 e ho iniziato a ottenere errori come questo:

Started GET "/javascripts/application.js?body=1" for 127.0.0.1 at 2012-02-20 23:25:10 +0800

ActionController::RoutingError (No route matches [GET] "/javascripts/application.js"):
  actionpack (3.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.1) lib/rails/rack/logger.rb:26:in `call_app'
  railties (3.2.1) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.1) lib/rack/runtime.rb:17:in `call'
  activesupport (3.2.1) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.1) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/static.rb:53:in `call'
  railties (3.2.1) lib/rails/engine.rb:479:in `call'
  railties (3.2.1) lib/rails/application.rb:220:in `call'
  rack (1.4.1) lib/rack/content_length.rb:14:in `call'
  railties (3.2.1) lib/rails/rack/log_tailer.rb:14:in `call'
  rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service'
  /home/alex/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
  /home/alex/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
  /home/alex/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'


  Rendered /home/alex/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.2.1/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.8ms)

Lo stesso per post.js, page.js ecc ... ma tutti questi file sono in assets/javascripts cartella.

Cosa devo fare esattamente per risolvere questo problema?

È così che li includo:

 <%= javascript_include_tag "application" %>

applicazione.rb:

require File.expand_path('../boot', __FILE__)

require 'rails/all'

require "sprockets/railtie"

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line
  Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  # Bundler.require(:default, :assets, Rails.env)
end

module Sandbox3Devise
  class Application < Rails::Application
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.

    # Custom directories with classes and modules you want to be autoloadable.
    # config.autoload_paths += %W(#{config.root}/extras)

    # Only load the plugins named here, in the order given (default is alphabetical).
    # :all can be used as a placeholder for all plugins not explicitly named.
    # config.plugins = [ :exception_notification, :ssl_requirement, :all ]

    # Activate observers that should always be running.
    # config.active_record.observers = :cacher, :garbage_collector, :forum_observer

    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
    # config.time_zone = 'Central Time (US & Canada)'

    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
    # config.i18n.default_locale = :de

    # Configure the default encoding used in templates for Ruby 1.9.
    config.encoding = "utf-8"

    # Configure sensitive parameters which will be filtered from the log file.
    config.filter_parameters += [:password]

    # Enable the asset pipeline
    config.assets.enabled = true

    # Version of your assets, change this if you want to expire all your assets
    config.assets.version = '1.0'
  end
end

Sviluppo.RB:

Sandbox3Devise::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

  # 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

  config.action_mailer.default_url_options = { :host => 'localhost:3000' }
end
È stato utile?

Soluzione

Da quale versione hai aggiornato? Rails 3.1 ha introdotto il Pipeline di attività, un nuovo modo di organizzare risorse (immagini, fogli di stile, javascripts, tra gli altri). Sembra che tu debba fare la transizione: la guida collegata sopra è un buon punto di partenza.

** Nel config/application.rb, è la linea require "sprockets/railtie" regalo ? In caso contrario, dovresti aggiungerlo.

** (Secondo modifica): quindi invece di javascripts/application.js?body=1, avresti dovuto assets/application.js?body=1. Questo può essere impostato con config.assets.prefix = "/some_other_path". Non sembra che sia stato modificato nei file che hai incollato, quindi potrebbe non essere ancora, e in questo caso .. mi arrendo. :p

Altri suggerimenti

Mi dispiace aggiungere una risposta a questa vecchia domanda, è principalmente a beneficio di quelli (come me) che inciampano su questo thread.

Ho avuto anche questo problema. Non ho aggiornato, ho avviato la mia domanda come applicazione Rails3 e dopo un po 'si è verificato questo tipo di problema. Penso che la causa sia stata quando ho iniziato a scherzare con gemme, come Faye, Bootstrap-Wysihtml5 ecc. Ciò ha richiesto riferimenti jQuery tra i file di applicazione.js e applicio.css. (È così che appare nei registri di controllo della mia versione)

Ad ogni modo, per risolvere il problema, ho appena creato una nuova applicazione Rails e ho copiato l'app, la configurazione, il DB e le gemme. Ciò ha risolto ogni problema che il server Rails stava registrando, quindi potrebbe essere un bug con la pipeline di risorse. Ho incluso il require "sprockets/railtie"Linea in applicazione.rb per buona misura, come suggerito anche sopra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top