2013-01-09 7 views
37

Basta chiedersi se c'è un modo per usare i turbolinks direttamente in un link link_to helper, un po 'di googling non ha portato alla luce nulla, ecco il tipo di cosa che non ho provato .Utilizzo di turbolinks in un collegamento Rails_to

<%= link_to 'Giraffe', giraffe_path(@giraffe), :data-no-turbolink => 'true' %> 
<%= link_to 'Giraffe', giraffe_path(@giraffe), :data { :no-turbolink => 'true'} %> 

So che si può fare in collegamenti regolari come questo

<a data-no-turbolink='true' href="/giraffe-130">Giraffe</a> 

In questo momento sto solo includendo l'attributo su elementi che circondano il link come lis o div.

Grazie in anticipo.

risposta

86

Inizialmente pensavo che fosse necessario utilizzare la sintassi del razzo hash per il simbolo, ma non è così. È possibile utilizzare un hash data: e all'interno di tale hash qualsiasi simbolo utilizzando i caratteri di sottolineatura _ verranno convertiti in trattini -.

penso che la maggior parte degli sviluppatori Rails preferirebbero vedere il seguente (me compreso, ora che conosco meglio):

<%= link_to('Giraffe', @giraffe, data: { no_turbolink: true }) %>

Ma le seguenti opere anche:

<%= link_to('Giraffe', @giraffe, 'data-no-turbolink' => true) %>

+0

ce l'ha, grazie! –

+0

Mi dispiace per l'upvoting di una risposta con 42 voti, anche se lo voglio davvero. Altrimenti, grazie non sapevo di questa conversione underscore-dash! Quindi significa che non è possibile avere il carattere di sottolineatura effettivo nell'output? –

+0

Se si desidera un trattino basso nell'output, è necessario utilizzare le virgolette e la sintassi del razzo hash. –

16

È è possibile utilizzare un simbolo senza problemi per generare il seguente codice:

<a data-no-turbolink='true' href="/giraffe-130">Giraffe</a> 

Basta effettuare le seguenti operazioni:

<%= link_to 'Giraffe', giraffe_path(@giraffe), 
      :data => { :no_turbolink => true } %> 

Nota: :no_turbolink diventerà no-turbolink e il valore verrà convertito in JSON automaticamente utilizzando to_json, per esempio true a "true".

+0

Penso che questa dovrebbe essere la risposta corretta. Corregge errori di battitura nella domanda originale senza dargli un modo diverso. –

4

o Ruby 1.9+ sintassi:

<%= link_to 'Foo', foo_path(@foo), data: { no_turbolink: true } %> 

Ma ho finito per cadere turbolinks a favore di Wiselinks che rende il comportamento esplicito su tutti i link, oltre a Wiselinks supporta anche aggiornamento parziale (ad esempio paging), sostituire stato (doesn 't inquina la cronologia del browser, ideale per l'ordinamento delle colonne, l'invio dei moduli (ideale per i moduli di ricerca), i reindirizzamenti, il supporto per i browser senza API di cronologia e una gestione più intelligente delle risorse.

59

Turbolinks 5 utilizza una sintassi leggermente diversa

<%= link_to "Foo", new_foo_path(@foo), data: { turbolinks: false } %> 

Fonte: Turbolinks Github Page

+1

Dopo l'aggiornamento a Rails 5, questo è sicuramente qualcosa da cercare. Ci ho messo un po 'a capire che la denominazione degli attributi era cambiata. – bovender

6

@Joseph hai ragione, ma solo piccolo cambiamento:

<%= link_to "Foo", new_foo_path(@foo), data: { turbolinks: 'false' } %> 

quando sto scrivendo turbolinks: false doesn funziona con bool, funziona solo quando uso stringa per il valore turbolinks: 'false'. Quindi qualcuno potrebbe aiutare questa informazione;).

+0

Wow. Bello prendere lì. Super utile. Mi hai salvato un sacco di problemi. –

+1

Questo ha funzionato per me! Grazie! – Schylar

0

quando si desidera cambiare la lingua usando locale, si dispone di fare come qui:

<%= link_to content_tag(:span, "Українською"), {locale: :uk}, 
data:{ turbolinks: "false" }%>