2012-12-27 21 views
8

Sto cercando di creare un collegamento mediante HAML che si presenta come il presenteCome utilizzare HAML in un collegamento dinamico?

=link_to("Last updated on<%[email protected]_data.date_from.month %>",'/member/abc/def?month={Time.now.month}&range=xyz&year={Time.now.year}') 

Non sta prendendo il codice Ruby e si sta visualizzando che come una stringa

Ultimo aggiornamento <% = @ last_data.date_from.month%>

e nella URL, nonche non sta prendendo la funzione Time.now.month o Time.now.year.

Come posso passare il codice Ruby nell'URL e nella stringa?

risposta

9

Probabilmente si dovrebbe usare qualcosa di simile a questo:

= link_to("Last updated on #{@last_data.date_from.month}", "/member/abc/def?month=#{Time.now.month}&range=xyz&year=#{Time.now.year}") 

Si noti che nella seconda stringa, è necessario cambiare la ' a ". Anche se il testo del link è sempre lungo, è possibile utilizzare qualcosa di simile:

= link_to("/member/abc/def?month=#{Time.now.month}&range=xyz&year=#{Time.now.year}") do 
    Last updated on #{@last_data.date_from.month} 
+1

Hey grazie prima parte funziona, ma l'URL ancora sto ottenendo Time.now .anno e Time.now.month –

+0

Hai cambiato i dintorni? Intendo '-> " –

+0

No, è lo stesso di sopra –

7

Tutto dopo il = in HAML è un'espressione Ruby. Ruby non interpola le stringhe come fa HAML, ha una propria modalità di interpolazione.

In Ruby, quando si desidera avere il valore di stringa di alcune variabili all'interno di un'altra stringa, è possibile farlo.

"Some string #{Time.now}" 

Quindi, dovrebbe essere:

= link_to "Last updated on #{@last_data.date_from.month}", "/member/abc/def?month=#{Time.now.month}&range=xyz&year=#{Time.now.year}" 
0

Un semplice esempio con un facile sintassi:

link_to "Profile #{rubycode}", "profile_path(@profile)/#{ruby_code}", class: "active" 
Problemi correlati