2014-03-03 3 views
1
  • 루비 2.0.0p247
  • 레일 4.0.0

어떻게 내 루프의 HTML 콘텐츠를 대체하는 방법?사용자 레일의 각 루프

- @recipes.each do |recipe| 
    = image_tag "path.png", :height => "?", :width => "?" 

폭스 예 :

예상 출력과 같은 것입니다 :

image_tag "medium-01.png", :height => "200", :width => "350" 

image_tag "small-02.png", :height => "183", :width => "285" 
image_tag "small03.png", :height => "183", :width => "285" 
image_tag "small-04.png", :height => "183", :width => "285" 
image_tag "small-05.png", :height => "183", :width => "285" 

image_tag "medium-06.png", :height => "200", :width => "350" 
image_tag "medium-07.png", :height => "200", :width => "350" 

image_tag "small-08.png", :height => "183", :width => "285" 
image_tag "small-09.png", :height => "183", :width => "285" 

결과 노호 원하는 :

enter image description here

가 JQuery와 나는 이런 짓을. 어쩌면 도움이 될지 :

$("div").each(function(i, element) { 
    if (i % 5 == 0 || i % 6 == 0) { 
     $(this).css({"background":"dark_gray_color"}); 
    } 
    else { 
     $(this).css({"background":"magenta_color"}); 
    } 
}); 

나는 분명합니까?

+0

몇 가지 질문 : 이미지 이름의 출처는 어디입니까? 높이와 너비 값은 어디에서 오는가? 어떻게하면 숫자 인덱스 값을 올바른 경로와 일치시킬 수 있습니까? (예를 들어,'@ recipes'가 다른 순서로되어 있고'medium-01.png' 대신에'small-01.png'로 끝나는 경우) ..기타)? –

답변

3

루비의 Enumerable#each_with_index을 사용하여 게시 한 jquery와 비슷한 루프를 만드십시오.

@recipes.each_with_index do |recipe, i| 
    if [0,5,6].include? i 
    h, w = 200, 350 
    else 
    h, w = 183, 285 
    end 

    image_tag "path.png", :height => "#{h}", :width => "#{w}" 
end 
+1

감사합니다. 나는 "each_with_index"를 몰랐다. 완벽하게 작동합니다! – maiconsanson

0

이 코드는 원하는 결과를 얻습니다. 햄 (HAML) 테스트가 제대로되어 있는지 확신 할 수 없습니다.

- @recipes.each.with_index do |recipe, i| 
    - if [i, i % 5, i % 6].any?(&:zero?) 
     = image_tag "medium-#{'%02d' % (i + 1)}.png", :height => "200", :width => "350" 
    - else 
     = image_tag "small-#{'%02d' % (i + 1)}.png", :height => "183", :width => "285" 
    - end