2013-01-11 57 views
5

我使用HAML 3.1.4和HAML護欄0.3.5HAML導軌形式 - HTML出現原料,而不是渲染爲HTML

我只遇到的問題在服務器上(生產)發生和本地(測試),但不參與發展(似乎都使用相同的寶石版本)

=form_for @thing, :remote => true do |f| 
    =hidden_field_tag :template, 'thing' 
    %table 
    %thead 
     %tr 
     %th 
      Name 
     %th 
      =image_tag 'cancel.png' 
    %tbody 
     =f.fields_for :items do |item_fields| 
     %tr 
      %td 
      =f.text_field :name 
      %td 
    =f.submit 'Save' 

它輸出下面的HTML保存文本:

<input type='hidden' value='thing' /><table><thead><tr><th>Name</th><th><img src='cancel.png.....' /></tr></thead> 

其次是上面呈現的HTML。

如何縮小測試/生產與開發之間的差異?

任何想法? :)

編輯: 可能值得一提的是,這是頁面上'@thing'的第二種形式。第一個是罰款,第二個是問題所在。

+0

我不認爲你應該在form_for行上有「=」。嘗試「 - form_for」。之前我一直被絆倒,雖然你看到發展中的不同行爲很奇怪。 –

+0

您需要'='因爲這是輸出HTML標籤的格式。 – Geoff

+0

因此,在關閉''後的渲染輸出全部像'<tbody>'一樣被轉義出來?另外,你是否錯過了關閉''或者這是問題的一部分? – mikezter

回答

0

通過它的外觀你不關閉標籤是你的問題?無論如何,爲了縮小test/prod/dev之間的差異,你真的需要檢查你的/config/文件夾的內容。我可以建議進行測試,您可以使用Rails.env == "development"來選擇您的環境,然後嘗試調試器並尋找差異。

+0

haml不需要關閉標記。 – Geoff

+0

以及html輸出沒有顯示結束標籤,所以我就像'%td = f一樣。text_field:名稱 %td''%table''可能只需要一個想法。 –

1

我有一些理論。

空白在haml中非常重要。有沒有可能你在其他地方有一個標籤和空格?

請問您的form_forremote: true?這會創建一些額外的div輸出,如果它正在重用id,我想可能會混淆DOM。

您確定您在form_for上使用=,因爲沒有它,它將不會輸出HTML表單標籤。

恐怕我只是猜測,而這些都不能解釋它爲什麼在開發中起作用。

也許它有幫助...

0

您可能會使用兩個不同版本的haml。 '='後面的空格可能是一個版本更嚴格。我會這樣寫:

= form_for @thing, :remote => true do |f| 
    = hidden_field_tag :template, 'thing' 
    %table 
    %thead 
     %tr 
     %th Name 
     %th= image_tag 'cancel.png' 
    %tbody 
     = f.fields_for :items do |item_fields| 
     %tr 
      %td= f.text_field :name 
      %td 
    = f.submit 'Save'