2011-03-16 9 views
2

많은 수의 관리 당신은 내가 분명히 스타일 시트/자바 스크립트의 많은 수의 (스타일 시트 중 하나는 동적이며 all.css에 캐시 할 수 없습니다)자바 스크립트/CSS (레일 3)

을 말할 수 어떤 상황에서는 스타일 시트 중 일부만 필요하지만, 하나의 스타일 시트에 캐싱을하는 것은 바람직하지 않습니다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까? Jammit 또는 다른 연결된 파일을 하나의 스타일 시트 & 자바 스크립트로 모든 페이지에 공통

<%= stylesheet_link_tag ['autocomplete.css', 'datepicker.css', 'web.css', 'common.css', 'home.css', 'course.css', 'admin.css'], :cache => true %> 
    <%= stylesheet_link_tag [@current_client.name.downcase + '/' + @current_client.name.downcase + '.css'], :cache => false %> 
    <%= javascript_include_tag ['jquery.js', 'class.js', 'jquery.extensions.js','nested_form.js','jquery.tablednd.js','jquery.autocomplete.js', 'date.js', 'datepicker.js', 'rails.js', 'common.js', 'navigation.js', 'patient_autocomplete.js', 'courses/course_request.js', 'course_steps/sort_course_steps.js', 'course_steps/next_step.js', 'enrollments/complete_course.js', 'flowplayer/flowplayer.js', 'flowplayer/playlist.js', 'course_steps/video.js', 'course_steps/presentation.js', 'highcharts.js', 'reports/course_assignment.js', 'reports/courses_allocated.js', 'reports/pie_chart.js'], :cache => true %> 

답변

1

패키지 것들 (나는 highcharts을 필요로 특정 보고서에 생각하지 않는 예를 들어 나는 보고서 스타일 시트 또는 highcharts 필요하지 않습니다) , 그리고 귀하의 기본 레이아웃에 넣어; 그런 다음 레이아웃에 몇 가지 수익을 추가하십시오 (아래 그림 참조). 그런 다음 관련 뷰에서 content_for 블록 (또는 헬퍼)을 사용하여 필요한 것을 추가하십시오.

# app/views/application.html.erb 
<%= javascript_include_tag 'all_compacted.js' %> 
<%= yield :extra_js %> 
<%= stylesheet_link_tag 'all_compacted.css' %> 
<%= yield :extra_css %> 

# random view that needs something not in all_compacted.js 
<%= content_for :extra_js do %> 
    <%= javascript_include_tag 'highcharts.js' %> 
<% end %> 

거기 Javascript_auto_include 플러그인, 컨트롤러/액션을 기반으로 그 의지의 자동로드 JS 파일도 있지만, 자바 스크립트 모든 페이지 (A 상황 에 아마 사용자의 많은 일에 더 적합의 꽤 익숙한 해요 와).

자바 스크립트의 비 차단로드를 수행하려면 head.js을 확인해 볼 가치가 있습니다.

+0

현재, headjs-rails Gem이 있습니다. https://github.com/muitocomplicado/headjs-rails –

+0

JavaScript_autoinclude는 (는) 더 이상 유지되지 않습니다, 어떤 아이디어입니까? –

+0

유지 보수가 필요 없으므로 코드를 살펴보아야합니다. 매우 간단합니다. 와 약간의 자바 스크립트를 사용하면 여분의 파일을로드하는 것과 같은 효과를 얻을 수 있습니다. $ .getScript ('/ public /'+ $ ('body'). attr ('id') + '. js'); – Unixmonkey