Оператор case
не делает то, что вы думаете, что он делает.Он сравнивает тему со всеми значениями, указанными в ветвях when
, и возвращает значение первого соответствующего значения.Например:
color = case num_color
when 1 then 'red'
when 2 then 'green'
when 3 then 'blue'
end
Вы указываете link_path
в качестве субъекта, поэтому он сравнивает link_path
с каждым логическим значением в ваших when
ветвях.Поскольку link_path
, вероятно, не является логическим значением, ни одна из ветвей не будет оценена.Может быть, вы хотите что-то вроде этого:
class_name = current_page?(link_path) ? 'current' : ''
Это установит class_name
в "current"
, если link_path
текущая страница, в противном случае ""
.