2014-10-25 2 views
2

Я пытаюсь отобразить различные CSS в зависимости от страницы. Я провел некоторое исследование How does one load a CSS framework in Rails 3.1? https://github.com/rails/rails/issues/1981 и, конечно же, направляющие направляющих по конвейеру активов. Я хочу, чтобы индекс (домашняя страница) отображал один файл css (welcome.css.scss), а остальные отображал users.css.scss.Показать таблицу стилей в зависимости от страницы в rails 4

Прямо сейчас, когда вы переходите на страницу, он отображает приветствие.css.scss, а затем, когда я нажимаю знак, он все еще рендерит welcome.css.scss. Но после обновления страницы он будет оказывать user.css.scss

Я обновил свой assets.rb файл:

Rails.application.config.assets.precompile += %w(welcome.css) 
Rails.application.config.assets.precompile += %w(users.css) 

Затем я создал welcome.html.erb

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Blocmarks</title> 
    <%= stylesheet_link_tag "welcome" %> 
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 
    <%= csrf_meta_tags %> 
    </head> 
    <body> 
    <%= yield %> 
    </body> 
</html> 

и файл users.html.erb

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Blocmarks</title> 
    <%= stylesheet_link_tag 'users' %> 
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 
    <%= csrf_meta_tags %> 
    </head> 
    <body> 
    <%= yield %> 
    </body> 
</html> 

Я удалил запрос из приложения.css.scss. Единственное, что в файле в настоящее время является загрузочной загрузкой @import; и, конечно, у меня есть приветствие и user.css.scss.

Результаты консоли: -Navigate на главную страницу

Started GET "/" for 127.0.0.1 at 2014-10-25 13:04:11 -0500 
    ActiveRecord::SchemaMigration Load (0.3ms) SELECT "schema_migrations".* FROM "schema_migrations" 
Processing by WelcomeController#index as HTML 
    Rendered welcome/index.html.erb within layouts/welcome (13.0ms) 
Completed 200 OK in 471ms (Views: 446.7ms | ActiveRecord: 0.0ms) 

Navigate для пользователей/входа в

Started GET "https://stackoverflow.com/users/sign_up" for 127.0.0.1 at 2014-10-25 13:04:57 -0500 
Processing by Devise::RegistrationsController#new as HTML 
    Rendered devise/shared/_links.erb (2.7ms) 
    Rendered devise/registrations/new.html.erb within layouts/devise (615.4ms) 
Completed 200 OK in 896ms (Views: 890.9ms | ActiveRecord: 0.9ms) 

Обновить/знаковый страницы пользователей:

Started GET "https://stackoverflow.com/users/sign_up" for 127.0.0.1 at 2014-10-25 13:06:02 -0500 
Processing by Devise::RegistrationsController#new as HTML 
    Rendered devise/shared/_links.erb (0.8ms) 
    Rendered devise/registrations/new.html.erb within layouts/devise (7.4ms) 
Completed 200 OK in 308ms (Views: 306.3ms | ActiveRecord: 0.0ms) 

Я также создал gist с полными результатами консоли, чтобы показать, что это GETting first: https://gist.github.com/tjperry07/b3093c0b7f16b5e000b0

ответ

5

Это происходит из-за rails turbolinks. Он делает следующие ссылки в вашем веб-приложении быстрее. Вместо того чтобы позволить браузеру перекомпилировать JavaScript и CSS между каждой сменой страницы, он сохраняет текущий экземпляр страницы живым и заменяет только тело и заголовок в голове.

Если вы посмотрите на guides или turbolinks docs. Это четко указано, что

При использовании turbolinks драгоценного камня, который включен по умолчанию в Rails 4, затем включает «данные-turbolinks-трек» вариант, который вызывает turbolinks, чтобы проверить, если актив был обновлен, и если да загружает его в страницу

FIX:

Replace теги таблицы стилей с этим:

<%= stylesheet_link_tag "welcome", media: "all", "data-turbolinks-track" => true %> 
<%= stylesheet_link_tag "users", media: "all", "data-turbolinks-track" => true %> 
Смежные вопросы