2012-04-22 3 views
2

각 컨트롤러에 대해 별도의 scss 파일이 있는데 레이아웃에 컨트롤러 특정 스타일 시트 및 js 파일을 포함 할 수 있도록 모든 파일을 application.css 파일로 가져 오지 않습니다. 레일에 컨트롤러 애셋을 미리 컴파일 3.2

그래서 레이아웃에 내가 할 :

<%= stylesheet_link_tag "application" %> 
<%= stylesheet_link_tag params[:controller], :media => "all" %> 
<%= javascript_include_tag 'application' %> 
<%= javascript_include_tag params[:controller] %> 

을하지만 레이크 자산을 실행하면 사전 컴파일을 나는 컨트롤러 자산을 컴파일되지 않습니다.

웹상에서 해결책을 찾았지만 필요한 파일을 config.assets.precompile 배치에 추가한다고 명시했습니다. 그리고 app/assets/stylesheet와 app/assets/javascript의 하위 폴더에있는 모든 애셋이 자동으로 컴파일되도록 그곳에 넣을 항목을 모르겠습니다.

1

OK UPDATE, 나는 하나 개의 파일에 모두에게 그들을 컴파일하지만, 두 가지 문제가 있습니다 : 내가 필요한 모든 변수와 수입을 포함하는 _base.scss 파일이

  1. @import 'base'; 
    @import 'style'; 
    @import 'forms'; 
    
: 내가 다른 모든 전에 해당 파일을 가져올 수 있도록하고있다가 application.css.scss에 application.css 이름을 변경

매니페스트로 어떻게해야합니까? scss 자체로 전체 디렉토리를 가져 오는 방법을 찾을 수 없습니다.

  1. 나는 다른 컨트롤러에서 동일한 선택자에 대해 몇 가지 다른 작업을 수행합니다. 그 행동을 분리하고 마녀를 특정 페이지에서 처리해야하는 가장 쉬운 방법은 무엇입니까?

답변

0

이것은 각 페이지로드에 대한 추가 HTTP 요청을 추가하고 많은 여분의 파일을 필요로하기 때문에 바람직하지 않습니다. 대부분은 비어 있고 실제 컨트롤러 고유의 CSS/JS가 될 수는 없습니다. 브라우저 캐싱을 무시합니다 (application.css/js를 한 번 캐시하고 잊어 버리십시오).

CSS/JS를 모두 포함하고 자산 파이프 라인을 적절하게 사용할 수있는 방식으로 작성하는 것이 좋습니다.

+0

문제를이 문제로 업데이트했습니다. – Almaron

+0

나는 CSS & JS 응용 프로그램을 갖고 컨트롤러 CSS와 JS를 사용하는 것을 선호한다. 컨트롤러가 내 응용 프로그램을 특정 부분으로 분할하기 때문입니다. 나는 모든 JS & CSS를 1 개의 파일에 덤핑하는 것을 좋아하지 않는다. 그것은 할 수 있지만, 사용되지 않는 선택자와 빈 jquery 선택자를 모두 가지고있는 이유는 무엇입니까? – Amala

2

솔루션 :

config.assets.precompile += ["controller1.js", "controller1.css", "controller2.js", "controller3.js"] 

하고 자산을 실행 다음 시간 : :이 또한

을 파일을 컴파일 미리 컴파일

이 줄을 추가

파일 설정에/application.rb

+0

자동으로이 작업을 수행 할 방법을 찾고 있지만 깨끗한 작업을 찾을 수 없습니다. – Amala

0

어떨까요 :

config.assets.precompile += Dir::entries("app/assets/javascripts"). 
           map{|f| f[/^(?!application\.).*\.js/]}.compact 
관련 문제