레일의보기 내에서 객체 배열을 순환하는 것 : 예기치 않은 동작

StackOverflow https://stackoverflow.com/questions/495319

  •  20-08-2019
  •  | 
  •  

문제

일부 이벤트를 표시하는 간단한 캘린더가있어 예상 결과를 제공하지 않습니다. 코드는 다음과 같습니다.

<!-- Begin Calendar -->
<%= calendar(:year => @year, :month => @month, :first_day_of_week => 1) do |d|

    output = []
    output << render_calendar_cell(d.mday)

    if d.wday == 1
        @garden.plants.collect do |p| 
            if p.needs_sowing? (d.cweek)
                output << "This week sow: #{p.name}"
            end
        end
    end

    end
%>
<!-- end calendar-->

니드 _sowing은 다음과 같습니다. 블록 내에서 호출 된 메소드 :

def needs_sowing? (week)
      if !sow_out_week_min.blank? && !sow_out_week_max.blank?
        (sow_out_week_min..sow_out_week_max).include? (week)
      end 
end

이것은 루프에 식물이 하나만 검사 될 때 올바른 동작을 제공하지만, 하나 이상이있는 경우 초기와는 별도로 출력이 표시되지 않습니다.

output << render_calendar_cell(d.mday) 

(그 달의 날을 출력하는 것).

누구든지 내가 어디에서 잘못 될지 알려주기 위해 손을 빌려 줄 수 있습니까? 아니면 루프에서 이런 종류의 행동을 처리하는 더 나은 방법에 대한 몇 가지 팁을 얻었습니까?

티아

도움이 되었습니까?

해결책

당신은 사용해야합니다 @garden.plants.each 대신에 collect. 수집은 배열 결과를 필터링하는 데 사용되어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top