Forum: Italian Ruby user group Usare contemporaneamente HAML ed ERB è possibile?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
74ba9c207c0b60aa996fbc7db1c28cf9?d=identicon&s=25 Carmine Moleti (carminem)
on 2009-02-27 17:19
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:in
`concat_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:in
`concat_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
Dc64befa87f79e074d55f83bcf9daa49?d=identicon&s=25 Silvano Stralla (sistrall)
on 2009-02-27 20:53
(Received via mailing list)
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 Moleti
<carmine.moleti@email.it> 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 Stralla . . .
email: silvano.stralla@sistrall.it
site: http://www.sistrall.it
74ba9c207c0b60aa996fbc7db1c28cf9?d=identicon&s=25 Carmine Moleti (carminem)
on 2009-02-27 21:30
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
72e0b3f5418bfcf47488918109068c4c?d=identicon&s=25 Andrea Cuius (q_rails)
on 2009-02-28 13:26
(Received via mailing list)
haml è senza senso :]
8768bcdbda1adf80e4da6744268868af?d=identicon&s=25 Pietro Giorgianni (giorgian)
on 2009-02-28 14:17
(Received via mailing list)
2009/2/28 Andrea (Q) <q@ptumpa.com>:
> 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.
0df4a6c75caf1bd9b01d2dcbfb085ee4?d=identicon&s=25 Sandro Paganotti (Guest)
on 2009-02-28 17:40
(Received via mailing list)
ma nei template rjs per addare javascript non si usava

page << "alert('ciao!');"

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


yez
74ba9c207c0b60aa996fbc7db1c28cf9?d=identicon&s=25 Carmine Moleti (carminem)
on 2009-02-28 21:25
Andrea Cuius wrote:
> haml � senza senso :]

:)

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.
72e0b3f5418bfcf47488918109068c4c?d=identicon&s=25 Andrea Cuius (q_rails)
on 2009-03-01 11:41
(Received via mailing list)
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
B0f6d8efcf671ea3163449e231264cc4?d=identicon&s=25 Msan Msan (msan)
on 2009-03-01 11:48
(Received via mailing list)
2009/3/1 Andrea (Q) <q@ptumpa.com>:
> 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?
74ba9c207c0b60aa996fbc7db1c28cf9?d=identicon&s=25 Carmine Moleti (carminem)
on 2009-03-02 07:27
Andrea Cuius 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 "</>".
74ba9c207c0b60aa996fbc7db1c28cf9?d=identicon&s=25 Carmine Moleti (carminem)
on 2009-03-02 07:29
> 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 :) ).
This topic is locked and can not be replied to.