2013-06-04 22 views
8

C'è un modo per interpolare in una chiamata a un helper di percorso?Interpolazione in Rails Route Helper

Ho un parziale in cui passo una risorsa (Utente, Galleria ecc.) Come locale chiamata resource. Ho bisogno di un collegamento per modificare la risorsa, ma ho bisogno il link per essere diverso per ogni risorsa:

Per un utente il link deve utilizzare l'assistente edit_user_path, per Galleria ha bisogno di utilizzare edit_gallery_path ecc

Quindi ho bisogno di un modo per interpolare il nome della risorsa nella helper (Pseudo codice): edit_{resource.name}_path

+0

Se si utilizzano risorse ereditate, è disponibile l'helper URL 'edit_resource_path (resource)' disponibile (https://github.com/josevalim/inherited_resources#url-helpers) – MrYoshiji

+0

@MrYoshiji Sembra che il proprietario della gemma lo abbia deprecato . – Undistraction

+0

Arf, questa gemma porta tanta magia nera e cose confuse, e ora deprecano i metodi senza aggiornare i loro documenti! – MrYoshiji

risposta

18

È possibile sostituire edit_user_path con send("edit_user_path"). Già verificato in console.

Ora è possibile interpolare la stringa all'interno.

+4

Ben fatto. Solo per espandere leggermente la risposta: 'invia (" modifica _ # {resource.class.to_s.underscore()} _ percorso ", risorsa)'. – Undistraction

+0

Ho bisogno di farlo in una vista, quindi sto ottenendo un errore del metodo 'non definito '. Sai su quale classe chiamare inviare? In console faccio 'app.send..' – cortex

+0

@cortex, questo dovrebbe essere in grado di funzionare in vista come OP. Inoltre non esiste una classe in quanto il percorso indicato appartiene all'istanza dell'app Rails. Se hai ancora problemi puoi pubblicare una nuova domanda con i dettagli. –