2013-01-11 10 views
5

Używam haml 3.1.4 i haml barierkami 0.3.5haml szyn formy - html pojawiające raw zamiast renderowania jako html

Problem mam tylko występuje na serwerze (produkcja) i lokalnym (test), ale nie w rozwoju (zarówno wydają się stosując te same wersje gem)

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

wyprowadza następujące html zapisać tekst:

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

następnie być renderowany html powyżej.

Jak mogę zawęzić różnice między testem/produkcją a rozwojem?

Wszelkie pomysły? :)

EDYCJA: Warto wspomnieć, że jest to druga forma "@thing" na stronie. Pierwsza sprawia, że ​​dobrze, druga jest tam, gdzie jest problem.

+0

Nie sądzę, że powinieneś mieć "=" w linii formularza_for. Spróbuj "- form_for". Byłem potknął się o tym wcześniej, chociaż dziwne jest, że widzisz inne zachowania w rozwoju. –

+0

Potrzebujesz '=', ponieważ to właśnie wyprowadza tagi HTML formularza. – Geoff

+0

, więc renderowane wyjście po zamknięciu '' zostało usunięte, podobnie jak '<tbody>'? A także, czy brakowało Ci zamknięcia '' czy jest to część problemu? – mikezter

Odpowiedz

0

Wygląda na to, że nie zamykasz tagu, czy to twój problem? W każdym razie, jeśli chodzi o zawężanie różnic między testem/prod/dev, naprawdę musisz sprawdzić zawartość twojego katalogu /config/. Mogę zasugerować testowanie, aby użyć Rails.env == "development" do wybrania środowiska, a następnie wypróbować debugger i szukać różnic.

+0

haml nie wymaga zamykania tagów. – Geoff

+0

cóż, wyjście html nie pokazuje znacznika zamykającego, więc zrobiłem to tak jak '% td = f.text_field: name % td' '% table' może potrzebować również jednej myśli. –

1

Mam kilka teorii.

Białe znaki są bardzo ważne w Haml. Czy to możliwe, że masz gdzieś kartę i białe spacje?

Czy oba urządzenia form_for mają remote: true? Tworzy to dodatkowe wyjście div, które, jak przypuszczam, mogłoby zmylić DOM, jeśli jest to ponowne użycie identyfikatorów.

Czy na pewno używasz = na form_for, ponieważ bez niego nie wyświetli on znaczników formularza HTML.

Obawiam się, że po prostu zgaduję, a żadne z nich nie wyjaśniłoby, dlaczego działa w fazie rozwoju.

Być może pomaga ...

0

Być może używasz dwóch różnych wersji Haml. Być może jedna wersja jest bardziej restrykcyjna w przestrzeni po znaku "=". Napisałbym to jak:

= 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' 
Powiązane problemy