2010-01-27 7 views
1

Je dois passer un appel à une URL différente dans l'un de mes contrôleurs sur mon site. Le problème est que avec tous les paramètres de l'autre site nécessite que je suis débordant l'URL. Est-il possible d'appeler une autre URL du contrôleur et d'envoyer tous les paramètres à l'aide d'un POST?Paramètres POST Ruby on Rails sur redirect_to

Je ne m'attends pas à une réponse de l'autre site. En outre, je pense qu'il y a un moyen de le faire en utilisant la bibliothèque Net :: HTTP pensé que je ne suis pas sûr de savoir comment.

Merci

+0

double possible de [rediriger \ _To POST en utilisant dans des rails] (http://stackoverflow.com/questions/985596/redirect-to-using-post-in-rails) –

Répondre

4

Vous ne pouvez pas faire une redirection et envoyer des données POST en même temps dans la spécification HTTP. Les redirections sont implémentées en envoyant un en-tête Location: otherlocation.html simple. Les données POST ne rentrent pas dans ce système.

Voulez-vous que l'utilisateur accède à cette page, ou voulez-vous simplement envoyer les données à l'application vous-même? Si vous voulez envoyer les données sans envoyer l'utilisateur, utilisez le module Net :: HTTP de Ruby. Si vous voulez envoyer l'utilisateur, vous pouvez être forcé de sortir une vue avec un formulaire, et le soumettre automatiquement avec Javascript. (Ne pas oublier de se dégrader avec élégance en offrant un bouton d'envoi dans noscript tags.)

+0

Je veux envoyer à l'utilisateur, il . Donc, fondamentalement, je dois envoyer l'utilisateur à une vue, puis faire un appel JS sur le chargement de la page pour poster les informations sur le site? – Splashlin

+0

À peu près. C'est hackish, mais c'est ce que vous avez à votre disposition. – Matchu

2

Ceci est du ruby docs:

require 'net/http' 
require 'uri' 

result = Net::HTTP.post_form(URI.parse('http://www.example.com/search.cgi'), 
    {'q'=>'ruby', 'max'=>'50'}) 

Comme vous pouvez le voir, vous passez les params dans un hachage pratique, contrairement à d'autres langages qui vous font salir avec le formatage http.

+1

Ceci soumet les données à l'autre site Web, mais n'envoie pas l'utilisateur final là, comme le PO l'exige. – Matchu

+0

L'OP a spécifiquement dit "Je ne m'attends pas à une réponse de l'autre site." Cela a ressemblé à un appel d'API pour moi. Plus tard, il a précisé qu'il voulait envoyer l'utilisateur là-bas, donc il doit vouloir dire qu'il ne s'attend pas à ce que * l'utilisateur * revienne. Mais j'avais déjà posté d'ici là. –