l'aggiunta e l'accesso ai controllori in Ruby on Rails
-
28-09-2019 - |
Domanda
Se ho un controllore, come faccio accedervi via URL con i metodi appena aggiunto?
Motivo Sono confuso è perché ho un percorso,
map.connect 'assignments/:external_id.:format', :controller => "assignments", :action => "show", :external_id => /\d{6}/
Sembra che non posso accedere a qualsiasi altro metodo all'interno del controller assignments
perché se lo faccio
mysite.com/assignments/other_method
Sarà scontato che other_method è un ID sto passando nel controller show
, come specificato nella voce rotta di cui sopra.
Modifica:
ho aggiunto questo al top:
map.connect 'assignments/send/', :controller => "assignments", :action => "send"
e ora sto ottenendo questo errore:
ArgumentError in AssignmentsController#show
Il percorso per assignments/send
è la prima declration per uno dei compiti di controllo
Soluzione
La tabella di routing dovrebbe avere in questo ordine
map.connect 'assignments/:external_id.:format', :controller => "assignments", :action => "show", :external_id => /\d{6}/
map.connect 'assignments/send/', :controller => "assignments", :action => "send"
per terminare con
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
come caso più generale.
Altri suggerimenti
Basta specificare il modello di percorso giusto per quel secondo caso e assicurarsi di tenere a mente che le mappature vengono valutate dall'alto verso il basso (prima partita viene eseguito).