неожиданный kENSURE, ожидающий $ end - Rails / Cucumber / Haml - PullRequest
3 голосов
/ 22 апреля 2010

Возникли проблемы с Rails / Cucumber / Haml. Приведенный ниже файл Haml отлично работает в средах разработки и реального времени, но в Cucumber не работает со следующей ошибкой:

/app/views/competitions/show.haml:30: syntax error, unexpected kENSURE, expecting $end (ActionView::TemplateError)
On line #30 of app/views/competitions/show.haml

Строка # 30 - это конец файла. Он работает в Haml gem версии 2.2.3, но не в более поздних (я пробовал 2.2.23, 2.2.22, 2.2.17)

- title @competition.name

%h1
  =h @competition.name

- if @competition.image?
  #main_image
    = image_tag(@competition.image_url)

= RedCloth.new(@competition.description).to_html

%h2
  =h @competition.question

%p 
  - if @competition.running?
    = link_to 'Enter competition', enter_path(:id => @competition.secret)
  - else
    = case @competition.state
      - when 'scheduled' then 'Competition has not opened'
      - when 'closed' then 'Competition closed'

if can? :update, @competition
  = link_to 'Edit', edit_competition_path(@competition)
  |

- if can? :show_stats, @competition
  = link_to 'View stats', competition_stats_path(@competition)

Есть идеи, что происходит?

1 Ответ

0 голосов
/ 26 июля 2011

По моему опыту работы с cucumber + haml, подобные вещи чаще всего вызваны неоднозначностью в вызове методов и потерей слежки за областью действия в условных выражениях. Попробуйте заключить в скобки все свои методы.

В коде, который вы разместили, в первом if также отсутствует -.

Я также рекомендовал бы попробовать поместить секцию when case в помощник, поскольку хамл иногда путается с такими вещами, особенно если они установлены с -.

Какую версию Rails вы используете?

...