L'invio di una variabile attraverso un link_to senza interrogazione url in Ruby on Rails
-
20-09-2019 - |
Domanda
Sto cercando di inviare una variabile attraverso un link_to, senza l'utilizzo di query URL in Ruby on Rails, da vista indice un controllore per essere utilizzato su indice di un altro controllore.
In sostanza, ho bisogno di passare il Turma.id (scuola di classe id), alla Elementos_turma (popoli della classe) di controllo, in modo da posso usarlo e filtrare l'indice: ElementosTurma.find (: all,: condizioni = > {: turma_id => xxxxx}), per mostrare i popoli della classe selezionata.
E 'possibile? Forse senza l'utilizzo di una variabile di sessione? Forse l'invio la variabile a un metodo al 1 ° regolatore, per inviarlo all'altro controller? (Se sì, come? Saggio non molto RoR ... :))
Soluzione
Non c'è bisogno di un metodo speciale per ottenere le informazioni necessarie, la magia di percorsi farà.
Nel file routes.db, si dovrebbe essere in grado di definire qualcosa di simile,
map.resources :class, :has_many => :students
Poi, se si esegue 'percorsi rake' si dovrebbe vedere un percorsi simili a questo
class_students GET /classes/:class_id/students(.:format) {:controller=>"students", :action=>"index"}
È possibile chiamare quel percorso nella vista in questo modo
class_students_path(class_id)
Poi, nel vostro controller si avrà accesso a params [: class_id]
Il nome del percorso, non è molto bella, ma questo dovrebbe funzionare.
Modifica --------------------------------------
Secondo il commento, non è possibile utilizzare map.resources per qualche motivo o un altro ...
map.class_students '/:class_id/students', :controller => 'students', :action => 'index'
Ciò produrrà lo stesso percorso disponibile nella vostra vista, lo stesso param nel controllore.
Detto questo, io non so come un bug server potrebbe proibire l'utilizzo map.resources
Altri suggerimenti
Non è possibile trasferire i dati attraverso un collegamento senza includere i dati in collegamento.
Tuttavia, suona come hai solo bisogno di utilizzare le risorse nidificate. (Dal momento che parlo inglese, ho intenzione di non affrontare un'altra lingua e fare ciò che viene a me.) Gli URL che si desidera essere l'invio di persone a probabilmente dovrebbe guardare più come questo se si vuole essere RESTful:
/classes/1/people/
Questo è il "modo delle rotaie" per indicare che si desidera ottenere la gente in classe # 1, e Rails offre built-in metodi di instradamento per rendere questo facile. Vedere la Rails Routing dall'esterno articolo nella Guida Rails.