È possibile determinare quanti parametri un helper di percorso richiede osservando la definizione di percorso.
Per esempio, si potrebbe avere questo file rotte:
resources :users
Se è stato eseguito rake routes
dalla riga di comando si dovrebbe vedere qualcosa di simile:
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
La prima colonna si dà il nome del percorso. È possibile aggiungere _path
o _url
per ottenere il nome di un helper del percorso.
La terza colonna mostra lo schema. Qui è dove puoi capire quali sono gli argomenti. Gli argomenti sono le parti precedute da due punti e gli argomenti facoltativi sono mostrati tra parentesi.Ad esempio, il percorso edit_user
ha il modello /users/:id/edit(.:format)
quali contiene una richiesta argomento (id
) e un argomento opzionale (format
), che mi dice che ho bisogno di passare almeno un argomento al edit_user_path
o edit_user_url
aiutante:
edit_user_path(1) # => "https://stackoverflow.com/users/1/edit"
edit_user_path(2, :html) # => "https://stackoverflow.com/users/2/edit.html"
È inoltre possibile utilizzare i nomi degli argomenti dal modello come chiavi in un hash:
edit_user_path(id: 3, format: 'js') # => "https://stackoverflow.com/users/3/edit.js"
Infine, è possibile aggiungere gli argomenti extra che entreranno a far parte della stringa di query:
edit_user_path(id: 4, format: 'json', foo: 1) # => "https://stackoverflow.com/users/4/edit.json?foo=1"
edit_user_path(5, bar: 2) # => "https://stackoverflow.com/users/5/edit?bar=2"
Vedere Rails Routing Guide's section on Listing Existing Routes per ulteriori informazioni su rake routes
.
Questa è un'ottima risposta! grazie! – lampShade
Ho una route il cui nome è 'admin_account_reset_password' come mostrato da 'rake routes', ma chiamare' admin_account_reset_password_url() 'all'interno di un' ActionMailer' mi dice: "metodo indefinito' admin_account_reset_password_url 'per Admin :: AccountMailer: Class" - thoughts ? –
questa è un'ottima risposta, ma ho letto il link sopra non riesco a trovare il documento menziona 'puoi aggiungere argomenti extra che diventeranno parte della stringa di query', sai dove posso trovare il doc dell'API per il metodo del percorso generato ? – GMsoF