Usare contemporaneamente HAML ed ERB è possibile?

Salve gente,

Ho un’applicazione a cui sto aggiungendo che fà uso di HAML per la
codifica delle view.

In un controller ho un’azione così definita:

def create
@comment = @product.comments.new(params[:comment])
@comment.user = User.first #current_user
@comment.save ? flash[:notice] = “Comment added!” : flash[:error] =
“Couldn’t add the comment”
respond_to do |format|
format.html { redirect_to session[:return_to] }
format.js
end
end

che quando chiamata attraverso un POST via AJAX fà il rendering della
view “create.js.erb” contenente
questo frammento di codice:

$(’#comments’).append("<%= display_comment_box(@comment) %>");

Al momento di eseguire il tutto, nel log mi trovo questo errore:

ActionView::TemplateError (undefined local variable or method _erbout' for #<ActionView::Base:0x245b38c>) on line #1 of product_comments/create.js.erb: 1: $('#comments').append("<%= display_comment_box(@comment) %>"); vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb:29:inconcat_without_haml’
/Library/Ruby/Gems/1.8/gems/haml-2.0.9/lib/haml/helpers/action_view_mods.rb:80:in
eval' vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb:29:inconcat_without_haml’
/Library/Ruby/Gems/1.8/gems/haml-2.0.9/lib/haml/helpers/action_view_mods.rb:80:in
`concat’

Mi pare di capire che stia cercando di intepretare il contenuto di
“create.js.erb” passando per HAML.
Ho già provato ad usare il markup HAML al posto di ERB ma, ovviamente,
il risultato non è quello desiderato (l’append mi aggiunge il markup
HAML non interpretato).

Come posso fare per risolvere?

Ringrazio anticipatamente

Ciao!

Non so se ho capito bene, ma l’errore potrebbe essere dovuto
semplicemente al fatto che append si aspetta una stringa HTML già
renderizzata e non un frammento di codice erb.

Vedendo più codice potrei dirti di
più.
Ciao,
Silvano

On Fri, Feb 27, 2009 at 5:19 PM, Carmine M.
[email protected] wrote:

$(‘#comments’).append(“<%= display_comment_box(@comment) %>”);


Considera l’ambiente prima di stampare questa email. Dai, che
l’equazione è semplice: meno A4, più alberi.

. . . Silvano S. . . .
email: [email protected]
site: http://www.sistrall.it

Ciao Silvano,

Grazie 1000 per la risposta.

Alla fine ho risolto.

Non so se ho capito bene, ma l’errore potrebbe essere dovuto
semplicemente al fatto che append si aspetta una stringa HTML gi�
renderizzata e non un frammento di codice erb.

In effetti si può utilizzare anche un frammento di codice ERB in questa
circostanza.
Sono riuscito ad ottenere lo stesso risultato utilizzando HAML al posto
di ERB.
E’ stato sufficiente scrivere una cosa del genere:

= “$(’#comments’).prepend(”#{display_comment_box(@comment)}");"

E rinominare il file da “create.js.erb” in “create.js.haml”.

A questo punto, mi sono imbattuto in un altro problema. L’helper
“display_comment_box” fà uso
di “concat” e “render :partial” e ad HAML dà fastidio ricevere l’output
su più righe, almeno nel
contesto del file “create.js.haml”. Anche questo l’ho risolto
concatenando l’output dell’helper in maniera che esso sia su una sola
riga.

Saluti

haml è senza senso :]

ma nei template rjs per addare javascript non si usava

page << “alert(‘ciao!’);”

(chiedo perchè è da un pò che nn uso rjs)

yez

Andrea C. wrote:

haml � senza senso :]

:slight_smile:

Può darsi, tuttavia io mi son trovato bene sin’ora. L’unico
“inconveniente” che ho avuto è quello che mi ha spinto a scrivere questo
messaggio. Anche questo, probabilmente, dovuto alla “fretta” nel leggere
la documentazione.

il fatto è che non trovo un senso a generare html con un meta
linguaggio, inoltre la cosa principale secondo me è che chi monta html
e css non conosce haml, probabilmente non lo vuole nemmeno imparare,
mi sembra solo di complicare davvero le cose per quanto alla fine sia
abbastanza semplice e produca un html perfetto.

Q

2009/2/28 Andrea (Q) [email protected]:

haml è senza senso :]

io mi trovo benissimo con haml per generare html, ma uso erb per il
javascript, semplicemente perché haml non è fatto per il javascript.

2009/3/1 Andrea (Q) [email protected]:

il fatto è che non trovo un senso a generare html con un meta
linguaggio, inoltre la cosa principale secondo me è che chi monta html
e css non conosce haml, probabilmente non lo vuole nemmeno imparare,
mi sembra solo di complicare davvero le cose per quanto alla fine sia
abbastanza semplice e produca un html perfetto.

Ma haml cosa sarebbe?

Ma haml cosa sarebbe?

http://haml.hamptoncatlin.com/

Direttamente dal sito di cui sopra:

Haml takes your gross, ugly templates and replaces them with veritable
Haiku.

Haml is the next step in generating views in your Rails application.
Haml is a refreshing take that is meant to free us from the shitty
templating languages we have gotten used to.

Diciamo che serve a ripulire un pò le viste. Ha un omologo per i CSS che
si chiama SASS (ma che ancora non ho deciso di provare :slight_smile: ).

Andrea C. wrote:

il fatto è che non trovo un senso a generare html con un meta
linguaggio, inoltre la cosa principale secondo me è che chi monta html
e css non conosce haml, probabilmente non lo vuole nemmeno imparare,
mi sembra solo di complicare davvero le cose per quanto alla fine sia
abbastanza semplice e produca un html perfetto.

Q

Non posso darti torto e, confesso, inizialmente ero piuttosto dubbioso
sul dafarsi.
Dopotutto, textmate non mi faceva pesare molto la scrittura dell’HTML.
Per curiosità , e per
via del fatto che sono l’unico e solo sviluppatore della
monn…applicazione ho dato ad HAML
una possibilità .

Fin’ora non me ne pento, anzi, ho la sensazione che le view siano più
“pulite”, nel senso che
c’è meno rumore dovuto al proliferare di “</>”.