Dans une application rails, j'ai une URL (ou un profil) que je mappe sur le contrôleur utilisateur pour permettre à un utilisateur de voir et de modifier son profil. J'ai fait les entrées suivantes dans mon fichier de route de sorte que le "get" pour le profil me conduise à l'action de profil dans le contrôleur d'utilisateur et le "poste" pour le profil dirigera vers l'action update_profile dans le contrôleur d'utilisateur.Problème de routage Rails
match '/profile', :to => 'users#profile', :via => "get"
match '/profile', :to => 'users#update_profile', :via => "post"
Si je lance routes râteau je vois les deux entrées suivantes
profile GET /profile(.:format) {:controller=>"users", ":action=>"profile"}
profile POST /profile(.:format) {:controller=>"users", ":action=>"update_profile"}
Si je tente de frapper l'url dev http://localhost:3000/profile il affiche la page de profil comme prévu. Si j'appuie sur le bouton de formulaire, il me donne l'erreur suivante:
Routing Error
No route matches "/profile"
En regardant le code HTML généré sur la première page je vois la balise formulaire ci-dessous, il semble que l'action se déroule correctement.
<form accept-charset="UTF-8" action="/profile" class="edit_user" enctype="multipart/form-data" id="edit_user_1" method="post">
Alors, qu'est-ce qui me manque? En regardant les sorties de rake routes, je supposais que cela fonctionnerait tel quel. Est-ce que je pense incorrectement à mes verbes http? Toute aide serait appréciée.
Le concept du/profil est que c'est bon pour l'utilisateur actuel, si vous n'êtes pas connecté au système, vous ne serez pas autorisé à accéder à la page, donc pas besoin de: id dans ce cas. Nous utilisons les URL générées pour le contrôleur d'utilisateur pour les capacités d'administration qui sont une expérience utilisateur différente de celle que nous voulons qu'un utilisateur ait pour son propre profil. L'action d'édition est donc utilisée par un administrateur système pour éditer un utilisateur existant dans lequel l'action du profil doit fournir une expérience différente personnalisée à l'utilisateur actuellement connecté. Oui, c'est comme ça qu'il apparaît dans la console. –
Cela fait beaucoup plus de sens. Dans ce cas, la seule chose qui me semble drôle est les routes réelles. Il ne devrait pas y avoir de citation avant: action, n'êtes-vous pas d'accord? La seule chose que je peux penser à essayer est d'utiliser systématiquement des guillemets doubles. Dans vos itinéraires, vous avez des guillemets simples autour de certaines chaînes et des guillemets autour d'autres. Cela ne devrait pas faire de différence, mais ça vaut le coup d'essayer. – Samo