2010-10-10 5 views
0

qui me permet de charger les URL commeRails 3- Comprendre le contrôleur/Routes relation

  • /photos
  • /photos/2
  • /photos/2/modifier

Modifier permet à l'utilisateur de changer l'image, mais je veux un type différent d'édition pour les trucs de type d'autorisation spécifiques à l'application que je construis, qui ressemblerait à:

  • /photos/2/updatesettings

Ainsi, dans le contrôleur de photos j'ai ajouté "updatesettings def ...."

Et dans les routes et j'ajouté:

resources :photos do 
collection do 
    get 'updatesettings' 
end 
end 

Mais je Je reçois une erreur: "Erreur de routage Aucune correspondance d'itinéraire"

Suggestions? grâce

Répondre

1

Qu'est-ce que vous avez dans votre fichier itinéraires correspondre à l'URL «/photos/updatesettings »

La seule façon que je sais comment faire ce que vous voulez faire est:

match "photos/:id/updatesettings" => "photos#updatesettings" 

Dans la seconde une partie de cette ligne, les photos lui indiquent de regarder dans le contrôleur de photos, et #updatesettings lui indique la méthode pour appeler.

Vous mettez ce en dehors des ressources: les photos, de sorte que votre code serait

resources :photos 
match "photos/:id/updatesettings" => "photos#updatesettings" 
1

Il y a une forte chance que vous utilisez un formulaire pour mettre à jour ces paramètres, suis-je pas? *

Dans ce cas, vous voulez faire post 'updatesettings' dans votre fichier routes, pas get. Cela définit un itinéraire qui répond aux demandes POST, par opposition à celui qui répond uniquement aux demandes GET. Si vous voulez les deux, utilisez une ligne get et une ligne post dans votre fichier de routes.

* La plupart du temps, oui je le suis.

+0

Eh bien je besoin d'un showSettings pour rendre une page HTML montrant tous les paramètres ... Je suppose que je vais avoir besoin d'un updatesettings to Post to? – AnApprentice

+0

J'ai une table d'autorisations qui gère toutes ces choses. Peut-être que cela appartient à ce contrôleur ... – AnApprentice