2012-11-23 60 views
16

我在我的代碼面臨着一個奇怪的錯誤,而使用HAML在我的代碼工作在我的本地機器,但是當我部署它,我收到以下錯誤Haml的-Illegal嵌套:純文本內築巢是非法

::的ActionView ::模板出錯(非法嵌套:純文本內築巢是非法的。):

我的代碼看起來像這樣

%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

+0

我遇到了一些麻煩找到這個問題的原因因爲錯誤是在用render渲染的部分內部,但是堆棧跟蹤指向了父級。 –

回答

7
  1. 如果你希望你的鏈接是%TD裏面,他們應該是1個點對點(TD - 0標籤,鏈接 - 從左側1個標籤)
  2. 你應該用同樣的方法,使縮進(例如總是使用tab instad空格)。
  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)) 
+0

是的,這是我的部分,但代碼在我的本地機器上工作正常 –

+0

你可以寫代碼之外提到的? – vekozlov