如果两个变量中至少有一个为真,我会执行一个简单的语句。我遇到的问题是如果两个变量都为真,则语句执行两次。我只需要执行一次。
<% if intensity == "true" || @planned_intensity == "true" %>
<div class="red_dot"></div>
<% end %>
我错过了一些明显的东西吗?在两个变量都为真的情况下,我得到两个红点。
//修改
它似乎在其他地方,但我似乎无法找到问题,这里是整个块:
<% LogEntry.cal_entry(entry_date.to_date, @athlete.id).each do |entry| -%>
<% workouts = entry.workouts -%>
<% workouts.each do |workout| -%>
<% @planned_intensity = false %>
<% planned_workouts = workout.planned_workouts -%>
<% planned_workouts.each do |pworkout| -%>
<% @planned_times = pworkout.planned_workout_times -%>
<% @planned_times.each do |planned_time| -%>
<% if planned_time.zone > 1 %>
<% @planned_intensity = true %>
<% end %>
<% end %>
<% end %>
<% completed_workouts = workout.completed_workouts -%>
<% completed_workouts.each do |completed_workout| -%>
<li id="<%= workout.id.to_s() %>">
<% completed_workout.workout_times.each do |time| -%>
<% intensity = "true" %>
<% if time.zone > 1 %>
<% intensity = true %>
<% else %>
<% intensity = false %>
<% end %>
<% if intensity == "true" || @planned_intensity == true %>
<div class="red_dot"></div>
<% end %>
<% end %>
<%= link_to_coaches_dialog workout.activity_id, entry.id.to_s(), "edit", "cal", @athlete.id.to_s, workout.id.to_s(), entry_date.to_date.to_s() %>
<% total_duration = 0 %>
<% completed_workout.workout_times.each do |workout_time| -%>
<% total_duration += workout_time.duration %>
<% end -%>
<% total_planned_duration = 0 %>
<% @planned_times.each do |planned_time| %>
<% total_planned_duration += planned_time.duration %>
<% end %>
<%= time_cleanup(total_duration/60) %>
<% unless total_planned_duration == 0 %>
<span class="smaller"> /
<%= time_cleanup(total_planned_duration/60) %></span>
<% end %>
</li>
<% end -%>
<% end -%>
<% end -%>
答案 0 :(得分:2)
很难从这看到确切地说可能导致红点出现两次的原因。我想,包含循环运行了两次,但我们不知道workout_times
中有哪些数据。
真正的问题是您要在此视图代码中设置intensity
和@planned_intensity
的值。你应该在模型或控制器中真正做这样的逻辑。此层(HTML视图模板)仅用于演示。分离的原因是你不会很难找到像这样的错误:)
我重构,以便视图调用workout_time
对象上的方法,以便逻辑在这个方法中。至少你会知道在哪里看。您也可以对此方法进行单元测试,而测试此视图则很尴尬。
您现在有哪些型号?我想你应该有workout
和workout_time
,然后在completed?
模型和planned?
方法上添加workout
和has_intensity?
方法workout_time
。