Два разных макета с одной таблицей стилей для каждого - PullRequest
0 голосов
/ 02 января 2012

У меня есть два разных макета и два разных стиля (по одному для каждого), используемые одним контроллером / действием.

Как я могу предотвратить следующую ошибку?

строка # 5повышено: app/assets/stylesheets/application.css has already been required

app / views / layouts / application.html.erb

2: <html>
3: <head>
4:   <title>Blog</title>
5:   <%= stylesheet_link_tag    "application" %>
6:   <%= javascript_include_tag "application" %>
7:   <%= csrf_meta_tags %>
8: </head>

Та же ошибка возникает при загрузке другого макета, но "application"затем "another_stylesheet_file_in_the_same_folder".

Что я не понимаю, так это то, почему файл application.css удалось загрузить, в то время как во втором макете есть другая строка <%= stylesheet_link_tag "another_css_file" %>.

Может быть, причина в конвейере ресурсов, который загружает обе эти таблицы стилей?Или это просто проблема наследования?

posts_controller.rb

class PostsController < ApplicationController
  layout :choose_layout

  def choose_layout
    current_uri = request.env['PATH_INFO']
    if current_uri.include?('diashow')
      @diashow = true
      return 'diashow'
    else
      @diashow = false
      return 'application'
    end
  end
...

Загружен ли макет приложения до выполнения этого кода?

Есть ли способрешить эту проблему с помощью before_filter?Или это просто глупо, что я пытаюсь сделать?:)

РЕДАКТИРОВАТЬ:

Консоль Rails:

Rendered posts/index.html.erb within layouts/application (10.4ms)
Compiled application.css  (2ms)  (pid 23453)
Compiled diashow.css  (1ms)  (pid 23453)
Completed 500 Internal Server Error in 348ms

Почему он загружает оба этих файла?Он должен загрузить только один из них.

1 Ответ

4 голосов
/ 02 января 2012

Оба эти файла, вероятно, включают эту команду:

 = require_tree . 

Это заставит их рекурсивно включать друг друга.

Эти директивы «закомментированы» для поддержания правильности синтаксиса файлов js / css. Тем не менее Asset Pipeline проанализирует эти комментарии и выполнит директивы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...