J'ai un formulaire de recherche sur mon site qui permet à un utilisateur de rechercher par de nombreuses facettes différentes telles que la ville, la gamme de prix, la taille, etc. P>
Le formulaire soumet comme un obtenu afin que les paramètres de formulaire soient dans l'URL. P>
Ils finissent par être assez moche: p>
/ Recherches? UTF8 = ✓ & City_Region = Vancouver & Property_Type_Id = 1 & Min_square_footage = 0 & max_square_footage = 15000 P>
(Ils sont effusés encore, car les paramètres de recherche font partie d'un modèle, il existe également de nombreux éléments de [s et] dans l'URL) P>
Ce que je voudrais faire est plutôt que le formulaire génère une URL comme: p>
/ Recherches / Vancouver / Office? Square_footage = 0-15000 P>
Lorsque certains des paramètres sont placés dans le chemin d'URL lui-même tandis que d'autres sont laissés dans les paramètres de requête (dans un format légèrement plus lisible). P>
Quelle serait la meilleure façon de gérer cela dans une application Rails? Tout ce que je peux penser, consiste à utiliser le code JavaScript sur le formulaire Soumettre pour manipuler l'URL que le formulaire soumet à. P>
3 Réponses :
Tout ce dont vous avez besoin est de créer un routage pour ce type de page.
Si vous êtes sur Rails 3: P>
= link_to 'Search', search_url(:city_region => 'Vancouver', :property_type_id => 5, :min_square_footage => 0, :max_square_footage => 15000)
Si ce n'était pas clair, l'URL de fin ressemblerait à ceci: MyApp.com/ Recherche / Vancouver / 5/0 / 15000
Sauf que je ne traite pas d'un lien - la page rend un formulaire, que l'utilisateur se remplit et que la soumission de ce formulaire est ce qui génère l'URL (le formulaire utilise plutôt que post).
TLDR: La seule façon de le faire est d'utiliser un Ajax sur le formulaire, puis une redirection. p>
Configurez l'événement de clic sur votre bouton de recherche pour déclencher un message de formulaire AJAX à une méthode du contrôleur. p>
Utilisez ensuite la réponse de la magie de Jack et appelez une redirection à l'aide de votre URL sympathique que vous générez ... N'oubliez pas que si vous voulez que Google trouve votre URL sympathique, vous aurez besoin de les avoir sur une page de manière statique. Si vous ne vous souciez pas du référencement, vous devez être assez simple. P>
Vous pouvez ajouter à votre contrôleur cette condition: