в Ruby on Rails, что такое kENSURE и kEND в сообщениях об ошибках? - PullRequest
4 голосов
/ 24 мая 2009

В Ruby on Rails я иногда получаю сообщение об ошибке на странице:

ошибка компиляции
/Users/jian/ror/shov2/app/views/stories/index.html.erb:13: Синтаксическая ошибка, неожиданная kENSURE , ожидая ')'
/Users/jian/ror/shov2/app/views/stories/index.html.erb:15: Синтаксическая ошибка, неожиданная kEND , ожидая ')'

КЕНД, я могу догадаться, что это Конец ... так что это означает Конец файла, но неожиданный, должен быть ')'.

как насчет КЕНСУРЕ?

Ответы [ 5 ]

13 голосов
/ 24 мая 2009

Константа kEND относится к токену «конец», как и то, чем вы заканчиваете каждый блок кода. Блок обеспечения является эквивалентом блока finally на других языках.

begin
  1/0
rescue ZeroDivisionError
  puts "OH SHI-"
ensure # <- THIS THING
  1/1
  puts "Whew, we're safe"
end

Вот к чему относится kENSURE.

Звучит так, как будто вы забыли поставить закрывающую скобку в конце вызова метода или списка параметров метода.

4 голосов
/ 29 мая 2011

У меня была такая же проблема. У меня было <%= end %> вместо <% end %>. Спасибо Джон!

3 голосов
/ 03 июня 2011

Также убедитесь, что у вас есть do после любых предложений, ожидающих блоки.

Делать что-то вроде

<%= form_tag "action" %>
  ...
<% end %>

вызовет ту же ошибку

1 голос
/ 24 мая 2009

Убедитесь, что разделители (например, <% %> и т. Д.) В ваших шаблонах ERB совпадают.

0 голосов
/ 24 мая 2009

ключевое слово ensure из обработки исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...