Ваш отступ неправильный, я думаю, что вы хотите что-то вроде этого:
%section
%article
- if @toss % 2 === 0
%p the player #{@player_one.name} start the fight !
- else
%p the player #{@player_two.name} start the fight !
- while @hp_player_one > 0 && @hp_player_two > 0
- @hp_player_one -= @player_two.attack
%p There is only #{@hp_player_one.to_s} point to #{@player_one.name}
- @hp_player_two -= @player_one.attack
%p There is only #{@hp_player_two.to_s} point to #{@player_two.name}
-if @hp_player_one <= 0 && @hp_player_two > 0
%p #{@player_one.name} lost
-elsif @hp_player_two <= 0 && @hp_player_one > 0
%p #{@player_two.name} lost
-else
%p draw !
В частности, вы не должны делать отступ после строки вроде
- @hp_player_one -= @player_two.attack
, поскольку это не такначать блок. Haml видит отступ после этой строки и предполагает, что это начало блока, и поэтому вставляет соответствующий end
в сгенерированный Ruby. Эти дополнительные end
s дадут вам unexpected end, expecting end-of-input
синтаксических ошибок.