2012-05-18 14 views
7

Ho il seguente codice in un file .erb:Perché l'interpolazione stringa non riesce nel modello erb?

<% embed='<a href="http://someurl.com/whatever">#{@webcast.name}</a>'%> 

<p id="embedCode"> 
    <pre> 
     <code> 
      <%= embed %> 
     </code> 
    </pre> 
</p> 

Il tag di ancoraggio è visualizzata correttamente sullo schermo come testo piuttosto che reso come un elemento DOM, tuttavia l'interpolazione stringa sta fallendo. L'html viene visualizzato correttamente come testo ma #{@webcast.name} non viene valutato. Se includi <% = @ webcast.name => nel modello, il nome del webcast è visualizzato correttamente.

risposta

13

Poiché le stringhe delimitate con virgolette singole '' non sono interpolate.

modificare il codice per esempio:

<% embed = "<a href=\"http://someurl.com/whatever\">#{@webcast.name}</a>" %> 

o (se si vuole evitare di mascherare i caratteri a doppio virgolette ")

<% embed = %(<a href="http://someurl.com/whatever">#{@webcast.name}</a>) %> 

o semplicemente (grazie a Samy Dindane per il suggerimento):

<% embed = "<a href='http://someurl.com/whatever'>#{@webcast.name}</a>" %> 
+2

È possibile utilizzare ''' come il delimitatore di 'href'. Trovo questo più carino. :) –

+0

@SamyDindane: Hai ragione. –

+0

@undur_gongor Ben fatto. Molte grazie. – Undistraction

Problemi correlati