레일의보기 내에서 객체 배열을 순환하는 것 : 예기치 않은 동작
-
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
. 수집은 배열 결과를 필터링하는 데 사용되어야합니다.
제휴하지 않습니다 StackOverflow