Haml::SyntaxError - 非法嵌套:内容不能与 %a 在同一行给出并嵌套在其中

标签 haml twitter-bootstrap

我正在使用带有 HAML 的 Twitter Bootstrap 中的“按钮下拉菜单”。在 Bootstrap 文档中,我找到了示例:

<div class="btn-group">
  <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
    Action
    <span class="caret"></span>
  </a>
  <ul class="dropdown-menu">
    <!-- dropdown menu links -->
  </ul>
</div>

我尝试使用 HAML 重写它:
%div{:class => 'btn-group task_controller'}
  %a{:class => 'btn-mini dropdown-toggle', "data-toggle" => 'dropdown', :href => '#'} Action
    %span{:class => 'caret'}
  %ul{:class => 'dropdown-menu'}
    %a{:class => 'close_task', :name => task.name, :href => '#' } Close        

但收到错误消息:
Haml::SyntaxError - Illegal nesting: content can't be both given on the same line as %a and nested within it.

所以 Bootstrap 说我把元素放在 -tag 里面,但是 HAML 不允许这样做。我该如何解决这个问题?

最佳答案

问题出在以下几行:

%a{:class => 'btn-mini dropdown-toggle', "data-toggle" => 'dropdown', :href => '#'} Action
  %span{:class => 'caret'}

错误信息:content can't be both given on the same line as %a and nested within itAction这是“与 %a 在同一行”的内容,以及 %span{:class => 'caret'} ,这是“嵌套在其中”的内容。

更一般地说,也许更容易看到,你不能有这样的东西:
%tag Some content here
  And something here as well

解决方法是将两者都嵌套在 %a 下。 :

%a{:class => 'btn-mini dropdown-toggle', "data-toggle" => 'dropdown', :href => '#'}
  Action
  %span{:class => 'caret'}

这给出了所需的输出:

<a class='btn-mini dropdown-toggle' data-toggle='dropdown' href='#'>
  Action
  <span class='caret'></span>
</a>

关于Haml::SyntaxError - 非法嵌套:内容不能与 %a 在同一行给出并嵌套在其中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10202931/

相关文章:

javascript - fullcalendar 设置了一个 id 它不起作用

ruby-on-rails - 如何将样式添加到 form_for 中的单个输入

css - 如何仅在 CSS 中悬停时显示文本

twitter-bootstrap - 用于 Visual Studio 2012 的 Bootstrap MVC4 脚手架

ruby-on-rails - 如何将所有数组项放入 HAML 文件中?

ruby-on-rails - HAML - 如何创建表单验证并显示错误消息?

ruby-on-rails - 关于在 HAML 中删除空格的问题

javascript - onCollapse 将父节点设置为选定节点,如果子节点/孙节点已被选中(bootstrap treeView)

css - 表单预览/详细信息页面的 Bootstrap 指南

javascript - 调用 Bootstrap Modal 时显示正确的选项卡