【问题标题】:Rails - Incorrect Assets LoadingRails - 不正确的资产加载
【发布时间】:2015-03-07 17:39:52
【问题描述】:

有时我会单击应用程序中的链接,加载的 *.css 和 *.js 文件引用了错误的控制器。如果我刷新页面,这会立即得到解决,但我不想告诉我的用户可能需要偶尔刷新页面。

这是在我的应用程序布局中加载内容的位置:

= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true
= stylesheet_link_tag params[:controller]
= javascript_include_tag 'application', 'data-turbolinks-track' => true
= javascript_include_tag params[:controller]

以及资产在我的 assets.rb 初始化程序中的加载位置

Rails.application.config.assets.paths << Rails.root.join('vendor', 'assets', 'flash')

%w( comments contact_types ensembles favorite_instruments fields gds gigs instuments
rank_members recruit_statuses scores seasons section_notes sections static students
announcements ).each do |controller|
    Rails.application.config.assets.precompile += ["#{controller}.js", "#{controller}.css"]
end

对我来说很奇怪,有时它可以工作,而其他时候却不行。我假设我对某些页面加载内容有问题。我正在使用turbolinksspringquiet_assets。我认为其他任何宝石都不会触及资产。

【问题讨论】:

  • 关闭涡轮链接。
  • 如果可能,关闭涡轮链接。

标签: javascript jquery ruby-on-rails ruby asset-pipeline


【解决方案1】:

TurboLinks 拦截请求并仅获取文档正文,“无缝”将其替换到 DOM 中。它不会触及&lt;head&gt;,因此在您完全重新加载页面并使用适当的&lt;head&gt; 获取新文档之前,您的JavaScript 包含不会改变。

TurboLinks(和 Rails)假设您将拥有一个单一的 JavaScript 包,而不是很多小的有条件包含的 JavaScript。您将不得不采用 Rails 方式,停止使用许多小型清单,或者关闭 TurboLink。

【讨论】:

  • 一些 javascript 非常繁重并且非常特定于页面。因此,我决定将其全部分解。你的分析器是有道理的,有没有办法在不结合所有 javascript 的情况下获得一些 turbo-links 的好处?
  • 另外,删除修复它。时间一到,我会接受你的回答。
猜你喜欢
  • 2013-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多