2010-05-18 4 views
1

J'ai une ressource de recherche, l'utilisateur peut effectuer des recherches en remplissant un formulaire et en le soumettant, l'action de création est appelée, la recherche est enregistrée, l'action show est appelée, et les résultats sont affichés. Tout cela se produit avec le POST par défaut, et tout fonctionne bien. L'utilisateur peut vouloir enregistrer sa recherche dans la table saved_search (je n'utilise pas la table de recherche à cette fin car cette table stocke toutes les recherches dans le but de compiler des statistiques, et est effacée régulièrement). Une fois la recherche enregistrée, elle peut être relancée en cliquant sur un lien hypertexte, c'est là que je commence à avoir des problèmes.soumission de formulaire et hyperliens en utilisant GET et POST

Je ne vois aucun moyen d'obtenir mon lien hypertexte pour lancer la création action de recherche, avec une requête POST, et les données nécessaires. J'ai alors décidé d'essayer d'obtenir à la fois la soumission de formulaire et le lien hypertexte pour effectuer une recherche en utilisant une requête GET, je n'ai pas pu obtenir form_for pour exécuter mon action Créer une recherche en utilisant une requête GET, il semble toujours être routé vers mon action d'index. Est-ce que quelqu'un peut suggérer une bonne solution à ce problème s'il vous plaît.

Un grand merci

Répondre

2

Je ne suis pas sûr de ce que vous essayez de faire ici. Si vous voulez avoir une forme soumettre une requête GET, vous pouvez remplacer l'attribut HTML sur l'aide form_for:

<% form_for blarg, :html => { :method => 'get' } %> 
blabla 
<% end %> 

Rails supporte également une façon de « faire semblant » la méthode HTTP en utilisant un paramètre « magique » (appelé "_method"), qui fait que Rails se comporte comme s'il avait vu la méthode HTTP dans ce paramètre.

Si vous envoyez le formulaire en tant que "get", vous devez vous assurer qu'aucun de ces paramètres n'est défini. Si vous souhaitez laisser un lien hypertexte envoyer un "POST", peaufiner ce serait le chemin (un navigateur n'enverra pas un vrai POST sur un clic sur un lien)

1

Jon, Si je comprends bien, si la recherche est déjà enregistré, vous pouvez simplement faire un get sur la ressource de la recherche enregistrée comme vous avez fait la première fois et utiliser l'action show à afficher le résultat.

Quoi qu'il en soit, si vous veut toujours faire un post avec un lien, la méthode d'aide link_to fait pour vous. Check it out: http://www.51773.com/tools/api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#M001597

Avec un: méthode =>: option de publication, il va créer un formulaire caché et publier vos données.

Espérons que ça aide.

Questions connexes