RoutingError dans le dossier JavaScript après la mise à niveau de Rails 3.1 à Rails 3.2

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

  •  28-10-2019
  •  | 
  •  

Question

Je viens de mis à jour Rails 3.2 et j'ai commencé à obtenir des erreurs comme celle-ci:

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)

La même chose pour post.js, page.js etc ... Mais tous ces fichiers se trouvent dans le dossier assets/javascripts.

Qu'est-ce exactement que je dois faire pour résoudre ce problème?

Voici comment je les inclure:

 <%= javascript_include_tag "application" %>

application.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

development.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
Était-ce utile?

La solution

Quelle version ne vous mettez à niveau? Rails 3.1 introduit le pipeline actif , une nouvelle façon d'organiser actifs (images, javascripts, feuilles de style, entre autres). On dirait que vous avez à faire la transition. Le guide lié ci-dessus est un bon endroit pour commencer

** Dans le config/application.rb, est la ligne actuelle de require "sprockets/railtie"? sinon, vous devez l'ajouter.

* * (deuxième édition): Au lieu de javascripts/application.js?body=1, vous devriez avoir assets/application.js?body=1. Cela peut être réglé avec config.assets.prefix = "/some_other_path". Il ne ressemble pas à ça a été changé dans les fichiers que vous avez recopiées, donc ce pourrait toujours pas, et dans ce cas .. Je renonce. : P

Autres conseils

Désolé pour ajouter une réponse à cette question ancienne, il est principalement au profit de ceux (comme moi) qui trébuche sur ce fil.

J'ai eu ce problème aussi. Je ne l'ai pas mise à jour, j'ai commencé mon application comme une application rails3 et après un certain temps, ce genre de problème se produisait. Je pense que la cause était quand j'ai commencé déconner avec des pierres précieuses, telles que Faye, bootstrap-wysihtml5 etc qui nécessitent des références jquery parmi les application.js et les fichiers applicaion.css. (C'est la façon dont il apparaît dans mes journaux de contrôle de version)

Quoi qu'il en soit, pour résoudre le problème, je viens de créer une nouvelle application rails et copié l'application, configuration, db et pierres précieuses sur. Cette résolu tous les problèmes était l'exploitation forestière le serveur rails, il est peut-être un bug avec le pipeline d'actifs. J'ai inclus le require "sprockets/railtie"line dans application.rb pour faire bonne mesure, comme suggéré ci-dessus aussi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top