18

在我的代码在我的本地机器上运行的地方使用 HAML 时,我的代码遇到了一个奇怪的错误,但是当我部署它时,我收到以下错误

ActionView::Template::Error(非法嵌套:纯文本内的嵌套是非法的。):

我的代码看起来像这样

  %td{ :style => 'width:10px' }
= link_to('Dashboard',   dashboard_admin_clients_account_path(client)) if client.is_member?
= link_to('Edit',   edit_admin_clients_account_path(client))
- if client.removed_at.nil?
  = link_to('Delete', admin_clients_account_path(client), :method => :delete, :confirm => 'Are you sure you want to delete')
- else
  = link_to('Restore', restore_admin_clients_account_path(client))

我是 HAML 的新手

4

1 回答 1

10
  1. 如果您希望链接位于 %td 内,它们应该向右 1 个选项卡(td - 0 个选项卡,链接 - 左侧 1 个选项卡)
  2. 您应该使用相同的方法进行缩进(例如,始终使用制表符代替空格)。
  3. 看起来问题不在此代码中。它是部分代码还是其他代码的一部分?

因为当你这样做时,通常会发生“非法嵌套”:

%td{ :style => 'width:10px' }
    justtext
      =link_to ....

试试这个代码:

%td{ :style => 'width:10px' }
    = link_to('Dashboard',   dashboard_admin_clients_account_path(client)) if client.is_member?
    = link_to('Edit',   edit_admin_clients_account_path(client))
    - if client.removed_at.nil?
        = link_to('Delete', admin_clients_account_path(client), :method => :delete, :confirm => 'Are you sure you want to delete')
    - else
        = link_to('Restore', restore_admin_clients_account_path(client))
于 2012-11-23T06:54:35.983 回答