srb*_*ert 5 haml ruby-on-rails
我正在尝试切换到使用HAML查看我的视图,但我不断收到意外的KENSURE消息.我用html2haml来切换工作视图文件.首先通过它告诉我,我不需要html2haml在其输出中的结束所以我删除它,现在我得到错误,看起来它抱怨表单没有结束.
我究竟做错了什么?
错误信息:
compile error
app/views/sessions/new.html.haml:20: syntax error, unexpected kENSURE, expecting kEND
app/views/sessions/new.html.haml:22: syntax error, unexpected $end, expecting kEND
Run Code Online (Sandbox Code Playgroud)
application.html.haml:
!!!
%html
%head
%title
= APP_CONFIG[:site_name] + ': ' + @page_title
== <meta http-equiv="content-type" content="text/xhtml; charset=utf-8" />
== <meta http-equiv="imagetoolbar" content="no" />
== <meta name="distribution" content="all" />
== <meta name="robots" content="all" />
== <meta name="resource-type" content="document" />
== <meta name="MSSmartTagsPreventParsing" content="true" />
= stylesheet_link_tag 'base'
= javascript_include_tag :defaults
%body
#container
#header
- if logged_in?
= link_to 'Logout', logout_path
- else
= link_to 'Login', login_path
= link_to 'Signup', signup_path
#content
= flash_messages
= yield :layout
Run Code Online (Sandbox Code Playgroud)
和sessions/new.html.haml
= title "Login", :h2
- form_tag session_path do
%fieldset
%legend
Your Details
%ol
%li
= label_tag 'login', 'Username'
= text_field_tag 'login', @login
%li
= label_tag 'password'
= password_field_tag 'password', nil
%li
= label_tag 'remember_me', 'Remember me'
= check_box_tag 'remember_me', '1', @remember_me
.buttons
= submit_tag 'Login'
= link_to 'Forgotten Password', forgot_password_path
Run Code Online (Sandbox Code Playgroud)
aus*_*ton 13
当你的间距错误时,这就是haml所做的事情.html2haml为您完成大部分工作,但您仍需要查看更改.sessions/new.html.haml中的问题是你正在创建一个没有内容的do块:
- form_tag session_path do
%fieldset
Run Code Online (Sandbox Code Playgroud)
整个字段集应该嵌套(缩进)在该do块中.因为根本没有内容,haml无法输入end声明,所以当文件被解释时,你得到:
unexpected $end, expecting kEND
Run Code Online (Sandbox Code Playgroud)
意思是"我点到了文件的末尾($ end),我期待结束关键字(kEND)"