컨트롤러 이름과 동작 이름으로 SCSS 호출
여러가지 방법은 있을까 생각합니다만, 이하와 같이 해 보았습니다.
assets/stylesheets/application.css
=require_self
* = require_directory.
디폴트라면 require_tree . 로 되어 있는 개소를 require_directory . 로 한다. 이렇게 하면 루트 디렉토리( assets/stylsheets/)의 css 밖에 자동으로 가져오지 않게 한다.
그런 다음 스타일 시트 디렉토리도 다음과 같이 views처럼 보입니다.
f ltcmdr927:20121209105229p:plain
HEAD 태그는 application.html.erb 로 편집하고 있으므로, 거기를 수정한다.
views/layouts/shared/application.html.erb
<%= stylesheet_link_tag "application", :media => "all"%>
<%= partial_stylesheet_link_tag controller.controller_name, controller.action_name, @partial_css_disabled %>
<%= javascript_include_tag "application"%>
stylesheet_link_tag 와 javascript_include_tag 사이에 새로운 helper 메소드를 추가한다. 인수로 뷰를 읽었을 때의 컨트롤러명과 액션명을 지정. @partial_css_disabled 는 후술.
app/helpers/application_helper.rb
module ApplicationHelper
def partial_stylesheet_link_tag(controller_name, action_name, disabled = true)
if disabled == false || disabled.nil?
if File.exist?("#{Rails.root.to_s}/app/assets/stylesheets/#{controller_name}/#{action_name}.css.scss")
return stylesheet_link_tag "#{controller_name}/#{action_name}"
끝
끝
끝
끝
partial_stylesheet_link_tag 메소드를 작성한다. disabled 가 false 혹은 nil 인가를 판정해, 정의이면 scss 파일의 유무를 판정해, 결국 컨트롤러/액션의 stylesheet_link_tag 를 돌려준다, 라고 하는 느낌.
기본적으로는 파일의 유무로 stylesheet 태그가 추가될지 어떨지를 판정하게 되므로, 예를 들어 파일은 존재하지만 태그는 추가하고 싶지 않다고 하는 경우는, 아래와 같이 controller 로 @partial_css_disabled 변수 에 true 를 지정해 준다. true 를 지정하면 파일이 존재해도 태그가 추가되지 않는다.
app/controller/welcome_controller.rb
class WelcomeController < ApplicationController
def index
@partial_css_disabled=true
끝
끝
약간 이모 같은 느낌이 들지 않아도 되지만, 개인적으로는 이것으로 관리하기 쉬워졌습니다. (컨트롤러의 계층 구조가 깊어진 경우에 대해서는 조사하고 나중에 추기 예정.)
Reference
이 문제에 관하여(컨트롤러 이름과 동작 이름으로 SCSS 호출), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/seijMAN/items/9d4554911472ad772a25텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)