为什么这个 haml 代码块会给出“语法错误,意外的 keywords_ensure,期望 $end”?
= tabs_tag(:open_tabs => { :id => "menu" }) do |tab|
- menu_tabs.each do |menu_tab|
- if !menu_tab.only_if.nil?
- if menu_tab.only_if.call
= tab.send menu_tab.tab_name, menu_tab.display_name, menu_tab.path, :span => "arrow-down"
- if !menu_tab.child_elements.blank?
%ul
- menu_tab.child_elements.each do |child_tab|
%li
=link_to child_tab.display_name, child_tab.path
- else
= tab.send menu_tab.tab_name, menu_tab.display_name, menu_tab.path
错误消息是
app/views/menu_builder/_tab_view.html.haml:15: syntax error, unexpected keyword_else, expecting keyword_end
app/views/menu_builder/_tab_view.html.haml:21: syntax error, unexpected keyword_ensure, expecting $end
(顺便说一句,行号也错了,我不知道这是否是一个 haml 问题)
我已经检查了缩进,一切都应该是正确的,而 else 应该对应于 if !menu_tab.only_if.nil? ,所以我不明白为什么会出现此错误消息。
= tabs_tag(:open_tabs => { :id => "menu" }) do |tab|
- menu_tabs.each do |menu_tab|
- if !menu_tab.only_if.nil?
- if menu_tab.only_if.call
= tab.send menu_tab.tab_name, menu_tab.display_name, menu_tab.path, :span => "arrow-down"
- if !menu_tab.child_elements.blank?
%ul
- menu_tab.child_elements.each do |child_tab|
%li
=link_to child_tab.display_name, child_tab.path
- else
= tab.send menu_tab.tab_name, menu_tab.display_name, menu_tab.path
The error message is
app/views/menu_builder/_tab_view.html.haml:15: syntax error, unexpected keyword_else, expecting keyword_end
app/views/menu_builder/_tab_view.html.haml:21: syntax error, unexpected keyword_ensure, expecting $end
(btw the line numbers are wrong too, I don't know if this is a haml thing)
I have checked the indentation and everything should be correct, and that else should correspond to if !menu_tab.only_if.nil?, so I don't understand why this error message is appearing.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我猜这是因为你正在这样做:
然后
将内容嵌套在 HAML 中非法的内容下。当您尝试执行以下操作时,您会遇到相同的错误:
HAML 会因此而卡住,因为它不知道如何在部分文件中呈现
if
语句(基于间距、if 语句的位置)它等)。同样的事情也适用于其他代码助手,例如您正在使用的选项卡。I'm guessing it's because you're doing this:
and
and then nesting content under that which is illegal in HAML. You get the same error when you try to do:
HAML will choke on that since it doesn't know how to render the
if
statement within the partial file (based on spacing, location of the if statement within it, etc.). Same thing applies with other code helpers like the tabs you're using.