2010-02-02 8 views
8

est-il un moyen de capturer et d'envoyer le querystring que le long dans le cadre d'une forme post? J'utilise Rails 2.3.5 et mon utilisateur est sur une page qui a plusieurs paramètres de chaîne de requête. Sur cette page, ils vont soumettre un formulaire. À l'intérieur de l'action qui reçoit le message, je veux savoir quels étaient ces paramètres de la chaîne de requête. De toute évidence, ils ne sont pas envoyés dans le cadre de la poste. J'ai donc besoin des valeurs de formulaire réelles, plus les paramètres de chaîne de requête qui étaient sur la page lorsque l'utilisateur a soumis le formulaire.Envoyer querystring params dans le cadre de la forme post

Je suis sûr que je pourrais écrire un javascript méchant qui mettrait les paramètres de la chaîne de requête dans des champs cachés sur le formulaire afin qu'ils soient disponibles, mais cela semble moche. Mon googling n'a pas beaucoup évolué, ce qui me pousse à me demander si je ne vais pas tout faire. Pour aggraver les choses, je suis un débutant Rails.

apprécierais toutes les indications ou des idées pour me va dans la bonne direction.

Répondre

9

Un de mes amis m'a montré ce que je crois est un moyen plus facile:

<% form_tag params.merge(:action=>"someAction") do %> 

dans le params fusion hachage nécessaire pour faire le form_tag a fait l'affaire parfaitement.

+0

yep qui est mieux, car il ne en fait créer l'url querystring – jpwynn

+0

Attention: les navigateurs ignorer les chaînes de requête pour les requêtes GET, dans ce cas, vous devrez créer des champs cachés pour chaque entrée. – fny

+3

Pour clarifier la déclaration de @faraz: les navigateurs ignorent les chaînes de requête dans l'URL ** action ** pour les formulaires soumis avec la méthode GET –

5

La façon préférée serait d'utiliser des champs cachés. Je ne l'ai pas essayé, mais je pense que vous pouvez spécifier des paramètres de chaîne de requête supplémentaires dans les helpers *_path ou *_url. Quelque chose comme:

<% form_for(@post, 
      :url => post_path(@post, :foo => 'foo', :bar => 'bar')) do |f| %> 
    ... 
<% end %> 
+0

Que va faire si je veux utiliser ce formulaire partagé pour éditer et créer des actions? – Stiig

0
<% form_tag params.merge(:action=>"someAction") do %> 

- Aucun résultat de route [POST]

Questions connexes