Rails - 不正确的资产加载

时间:2015-03-07 17:39:52

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

有时我会点击我的应用程序中的链接,并且加载的* .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。我不认为任何其他宝石都会触及资产。

1 个答案:

答案 0 :(得分:2)

TurboLinks拦截请求并仅提取文档正文,&#34;无缝地&#34;将其替换为DOM。它没有触及<head>,因此在您完全重新加载页面并使用相应的<head>获取新文档之前,您的JavaScript包含不会更改。

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