Dove ha link_to_function scomparire a in Rails 3?
-
20-09-2019 - |
Domanda
Stavo solo giocando intorno con Rails 3 beta e ho notato che link_to_function è ormai andato. Presumo che c'è un metodo alternativo per ottenere lo stesso risultato (evento onclick?), Ma mi chiedevo se c'è un modo più Rails-3'y di farlo. TIA.
Soluzione
Rails 3 sembra aver fatto fuori con Prototype Helper a favore di una libreria JS approccio meno invadente / agnostico. L'obiettivo è quello di eliminare tutti i JavaScript inline generato da Rails. Prototipo Helper generato praticamente tutto il javascript.
Ora, qualsiasi delle varianti non a distanza di aiutanti genererà il javascript corretta per una chiamata remota nella libreria JS di scelta semplicemente fornendo il:. => True l'opzione remote
Purtroppo questo non vale per la x di funzionare metodi. Per il momento non ci sono le prototipo aiutanti legacy che non sono più una parte fondamentale di Rails.
Si potrebbe anche usare chiamata come definito nella ActionView :: Helpers :: :: PrototypeHelper JavascriptGenerator :: GeneratorMethods per la fornitura di codice javascript per: onclick come html_option per link_to, ma non è esattamente abbastanza
.Esempi:
Rails < 3 | Rails 3
link_to_remote "target", url | link_to "target", url, :remote => true
form_remote_for @post | form_for @post, :remote => true
etc ....
O qualcosa in tal senso. Sto avendo difficoltà a trovare la documentazione ufficiale per eseguire il backup le mie affermazioni. Così il note avrà a che fare, per ora.
Prima di poter utilizzare, è necessario includere i file di origine il corretto js. Assicurarsi che si sta caricando prototype.js e rails.js, o la biblioteca e autista per JS quadro di scelta al loro posto.
Ricordate, Rails 3 è in beta ora. Ma questo non significa che il gioco è fatto. Onestamente non ho idea di come sarà sostituito link_to_function. Va contro l'ideale di javascript discreto.
Altri suggerimenti
Per rispondere alla mia domanda, sembra che questo funziona ed è sufficiente per quello che mi serve:
link_to "name", nil, :onlick => "alert('Hello, world!')"
link_to_remote può essere fatto in questo modo
link_to "target",: a distanza => true
e di fare un post ajax / farti avere
link_to "target", {: Controller => controller: action => metodo,}: distanza => true
In rotaie 2 è stato come questo
link_to_remote "target",: url => {: Controller => Controller,: action => metodo,}: remoto => True