'problem'에 해당되는 글 1건

  1. 2014.09.19 HAML에서 IF 인덴트 문제 해결 방법

Rails 상에서 haml에서 if를 사용해서 2개씩 끊어서 .row 값을 부여할 때, 아래 결과와 같이 인덴트 문제가가 발생한다. 자식으로 들어가야하는데, 형제 노드로 들어간다. 해결하기 위해서 else 밑의 부분을 한 번더 인덴트를 넣고 싶지만 그러면 인덴트 에러가 발생한다. 아… haml 이 싫어지는 시점.

- @result.each_with_index do |project, index|
    - if index % 2 == 0 
        .row
            %div
                test
    - else 
        %div
            test

결과 HTML

<div class="row">
    <div>
    test
    </div>
</div>
<div>
    test
</div>


해결 방법은 in_groups_of(number, fill_with = nil) 메소드를 사용해서 그룹으로 나누는 것이다. 배열을 지정한 갯수만큼 그룹으로 나눠서 계산을 하게 된다. 그러면 코드도 좀 더 깔끔해지고 자식 노드로 잘 들어간다.

- @result.in_groups_of(2, false) do |project_group|
  .row
      - project_group.each do |project|
            %div
                test

결과 HTML

<div class="row">
    <div>
        test
    </div>
    <div>
        test
    </div>
</div>

참조 : HAML indentation problem IF

http://apidock.com/rails/Array/in_groups_of

%w(1 2 3 4 5 6 7 8 9 10).in_groups_of(3) {|group| p group}
["1", "2", "3"]
["4", "5", "6"]
["7", "8", "9"]
["10", nil, nil]

%w(1 2 3 4 5).in_groups_of(2, '&nbsp;') {|group| p group}
["1", "2"]
["3", "4"]
["5", "&nbsp;"]

%w(1 2 3 4 5).in_groups_of(2, false) {|group| p group}
["1", "2"]
["3", "4"]
["5"]


저작자 표시 비영리
신고
Posted by KraZYeom