Je suis nouveau dans les rails et j'essaie d'utiliser le lien_to assistant pour créer un lien qui émet une demande de vente au lieu d'une demande d'obtention. Spécifiquement, j'essaie de créer un lien qui active le compte d'un utilisateur dans mon application à partir du panneau de l'administrateur. J'utilise Rails 3.0.5.
Mon fichier routes.rb a:
match '/admin/users/:id/activate' => 'admin#activate_user',
:action => :activate_user, :via => :put
Mon point de vue a:
link_to 'Activate', :action => :activate_user, :id => user.id, :method => :put
Cependant, cela génère l'URL (par exemple) /admin/users/7/activate?method=put
avec le code source <a href="/admin/users/7/activate?method=put">Activate</a>
.
Je voudrais générer, à la place, <a href = "/admin/users/7/activate" data-method="put">Activate</a>
Je me rends compte que je pourrais utiliser Button_to, mais je me lance avec cette question pendant un moment et je suis confus pourquoi je vois ce comportement, lorsque d'autres tutoriels disent que ce que je fais devrait être valide. Comment puis-je continuer à créer un helper link_to avec le comportement que je veux?
mise à jour - le link_to
Helper fera une obtention à moins qu'une méthode soit spécifiée.
Sa meilleure spécification du type de demande exact, au lieu de match
dans votre fichier de routes. Que diriez-vous de remplacer match
par put
en itinéraires comme:
put '/admin/users/:id/activate' => 'admins#activate_user', :as => 'activate_user'
link_to 'Activate', activate_user_path(user.id), method: :put
Les activate_user
La méthode devrait résider dans admins
contrôleur. The docs a plus d'informations sur link_to
assistant.
link_to
pense que :method => :put
fait partie du traité de chemin. Vous devez le dire autrement. Enveloppez votre chemin entre parenthèses.
link_to 'Activate', {:action => :activate_user, :id => user.id}, :method => :put
Maintenant link_to
reconnaîtra :method => :put
En tant qu'option, ne faisant pas partie du chemin du lien.
En tant que note latérale, vous devriez essayer d'utiliser les aides d'itinéraires au lieu de trajectoire dans la mesure du possible. Garde des choses agréables et bien rangées et évite les situations nit-piquées comme celle-ci.