2013-01-11 8 views
5

sto usando Haml 3.1.4 e Haml-rails 0.3.5Haml rotaie forme - html che appare grezzo, invece di rendere come html

Il problema che sto avendo solo si verifica sul server (produzione) e localmente (test), ma non in via di sviluppo (entrambi sembrano essere utilizzando le stesse versioni gemma)

=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' 

emette il seguente codice HTML salvare il testo:

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

seguito il rendering HTML di cui sopra.

Come posso restringere quali sono le differenze tra test/produzione e sviluppo?

Qualche idea? :)

MODIFICA: Potrebbe essere utile ricordare che questo è il secondo modulo per "@thing" sulla pagina. Il primo rende bene, il secondo è dove si trova il problema.

+0

Non penso che tu debba avere il "=" sul form_for linea. Prova "- form_for". Sono già stato inciampato in questo, anche se è strano vedere comportamenti diversi in fase di sviluppo. –

+0

Hai bisogno di '=' perché questo è ciò che genera i tag HTML del modulo. – Geoff

+0

quindi l'output sottoposto a rendering dopo la chiusura '' è tutto escapato come '<tbody>'? Inoltre, ti sei perso la chiusura '' o è questa parte del problema? – mikezter

risposta

0

A giudicare dall'aspetto non si sta chiudendo il tag è questo il tuo problema? In ogni caso, per quanto riguarda il restringimento delle differenze tra test/prod/dev, è necessario controllare i contenuti della cartella /config/. Posso suggerire di provare che è possibile utilizzare Rails.env == "development" per scegliere il proprio ambiente e quindi provare il debugger e cercare le differenze.

+0

haml non richiede la chiusura dei tag. – Geoff

+0

beh l'output html non mostra un tag di chiusura quindi l'ho preso come il '% td = f.text_field: name % td' la 'tabella %' potrebbe averne bisogno anche solo di un pensiero. –

1

Ho un paio di teorie.

Lo spazio bianco è molto importante in haml. È possibile che tu abbia una scheda da qualche parte e degli spazi bianchi altrove?

Entrambi i vostrihanno remote: true? Ciò crea un output extra div che suppongo possa confondere il DOM se riuscia gli id.

Sei sicuro di utilizzare lo = su form_for perché senza di esso, non genererà i tag del modulo HTML.

Ho paura di indovinare e nessuno di questi spiegherebbe perché funziona nello sviluppo.

Forse aiuta ...

0

Si potrebbe utilizzare due diverse versioni di Haml. Potrebbe essere una versione più rigida sullo spazio dopo il '='. Lo scriverei come:

= 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' 
Problemi correlati