如何在不获取 ActionController::RoutingError 的情况下删除 Rails 中未使用的 css?
How to remove unused css in Rails without getting ActionController::RoutingError?
我得到了名为 Welcome 的视图。我手动创建了这个。由于此视图不需要 css/js 文件,因此我不想创建它们并将其放入资产文件夹中。但是,然后我收到了这个错误:
Started GET "/javascripts/welcome.js" for ::1 at 2017-11-13 14:55:39 +0000
ActionController::RoutingError (No route matches [GET] "/javascripts/welcome.js"):
actionpack (5.0.0.rc2) lib/action_dispatch/middleware/debug_exceptions.rb:53:in `call'
web-console (2.3.0) lib/web_console/middleware.rb:28:in `block in call'
web-console (2.3.0) lib/web_console/middleware.rb:18:in `catch'
web-console (2.3.0) lib/web_console/middleware.rb:18:in `call'
而这个错误:
ActionController::RoutingError (No route matches [GET] "/stylesheets/welcome.css"):
Rendering /Users/ryzal/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb within rescues/layout
actionpack (5.0.0.rc2) lib/action_dispatch/middleware/debug_exceptions.rb:53:in `call'
web-console (2.3.0) lib/web_console/middleware.rb:28:in `block in call'
web-console (2.3.0) lib/web_console/middleware.rb:18:in `catch'
web-console (2.3.0) lib/web_console/middleware.rb:18:in `call'
我可以通过简单地创建 welcome.js 和 welcome.css 文件并将它们放在资产上来消除这些错误。但是,我确实想这样做,因为我知道我不想也永远不想使用这些文件。
那我该如何解决呢?
仅供参考,我的 Rails 应用程序没有失败。一切正常。我得到的错误出现在我的终端上。见下文:
这是我 config/initializer/assets.rb
中唯一的东西
Rails.application.config.assets.version = '1.0'
可能有更简洁的方法,但我会使用布局。
将布局分配给您想要在控制器中使用的页面,并且在这些布局中需要您需要的文件:
http://brandonhilkert.com/blog/page-specific-javascript-in-rails/
在您的布局中:
<%= stylesheet_link_tag params[:controller] %>
<%= javascript_include_tag params[:controller] %>
这会强制您的应用程序为具有当前控制器名称的任何控制器加载资产(也欢迎)。如果你删除它,你的错误应该消失。请记住,此代码可能对其他控制器有用,您可能会失去一些 styles/javascripts。将它们全部包含在资产的 application.js/.css 文件中。无需以这种动态方式单独加载资产
我得到了名为 Welcome 的视图。我手动创建了这个。由于此视图不需要 css/js 文件,因此我不想创建它们并将其放入资产文件夹中。但是,然后我收到了这个错误:
Started GET "/javascripts/welcome.js" for ::1 at 2017-11-13 14:55:39 +0000
ActionController::RoutingError (No route matches [GET] "/javascripts/welcome.js"):
actionpack (5.0.0.rc2) lib/action_dispatch/middleware/debug_exceptions.rb:53:in `call'
web-console (2.3.0) lib/web_console/middleware.rb:28:in `block in call'
web-console (2.3.0) lib/web_console/middleware.rb:18:in `catch'
web-console (2.3.0) lib/web_console/middleware.rb:18:in `call'
而这个错误:
ActionController::RoutingError (No route matches [GET] "/stylesheets/welcome.css"):
Rendering /Users/ryzal/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0.rc2/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb within rescues/layout
actionpack (5.0.0.rc2) lib/action_dispatch/middleware/debug_exceptions.rb:53:in `call'
web-console (2.3.0) lib/web_console/middleware.rb:28:in `block in call'
web-console (2.3.0) lib/web_console/middleware.rb:18:in `catch'
web-console (2.3.0) lib/web_console/middleware.rb:18:in `call'
我可以通过简单地创建 welcome.js 和 welcome.css 文件并将它们放在资产上来消除这些错误。但是,我确实想这样做,因为我知道我不想也永远不想使用这些文件。
那我该如何解决呢?
仅供参考,我的 Rails 应用程序没有失败。一切正常。我得到的错误出现在我的终端上。见下文:
这是我 config/initializer/assets.rb
Rails.application.config.assets.version = '1.0'
可能有更简洁的方法,但我会使用布局。
将布局分配给您想要在控制器中使用的页面,并且在这些布局中需要您需要的文件:
http://brandonhilkert.com/blog/page-specific-javascript-in-rails/
在您的布局中:
<%= stylesheet_link_tag params[:controller] %>
<%= javascript_include_tag params[:controller] %>
这会强制您的应用程序为具有当前控制器名称的任何控制器加载资产(也欢迎)。如果你删除它,你的错误应该消失。请记住,此代码可能对其他控制器有用,您可能会失去一些 styles/javascripts。将它们全部包含在资产的 application.js/.css 文件中。无需以这种动态方式单独加载资产