2011-12-01 44 views
1
= 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的东西)

我检查了缩进,一切都应该是正确的,那还应该对应于if!menu_tab.only_if.nil ?,所以我不明白为什么会出现这个错误信息。

回答

3

我猜那是因为你这样做:在这有限的HAML非法

= tabs_tag(:open_tabs => { :id => "menu" }) do |tab| 

= tab.send menu_tab.tab_name, menu_tab.display_name, menu_tab.path, :span => "arrow-down" 

,然后嵌套内容。

= render :partial => "some/view", :locals => { :local_var => @var } 
    - if something 
    -# do something 

HAML将会对呛,因为它不知道如何渲染部分文件内的if声明(根据间距,if语句的位置中:当你尝试做你得到了同样的错误它等)。同样的事情适用于其他代码助手,如您正在使用的选项卡。

相关问题