2010-03-23 9 views
2

Je voudrais permettre aux utilisateurs d'appeler mon application ruby ​​on rails comme un service qui retourne un 'div' avec du contenu html, et intégrer ce div dans leur application (qui ne sera pas une application rails). Par exemple, supposons que quelqu'un a son propre site Web php qui a un modèle d'en-tête/pied de page qui est rendu, et une zone de contenu de la page qu'ils doivent remplir en fonction de certaines html que je génère dans mon application rails. Je voudrais leur permettre, à partir de php, d'appeler sur mon site Web, obtenir le 'div' que je génère, et l'intégrer en tant que html dans leur page php. Ce que j'essaye de faire est d'héberger un service sur mon site qui retourne du contenu html, mais qui montre réellement ce contenu dans un autre site, de sorte que l'utilisateur final ne voit que l'autre site et ne sache jamais vraiment mien.Comment puis-je intégrer le résultat d'une page Web dans une autre page Web sur un autre site Web?

Aussi, je peux utiliser javascript sur le client pour le faire si c'est le seul moyen, mais je préférerais l'application php pour gérer cela sur le serveur si possible afin que le client obtienne le html embarqué du serveur original et il semble que tout a été généré par le script php qui a généré la page entière. Je veux aussi éviter d'utiliser un iframe.

Est-ce possible?

+0

Pas de vraie réponse à une question aussi fondamentale après plus d'un an? Surprenant. – Oscar

Répondre

2

En supposant que vous devez faire une demande de domaine croix des données, et vous ne pouvez pas utiliser un iframe, vous pouvez essayer d'utiliser JSONP pour aller chercher le code html enveloppé en JS.

+0

C'est intéressant. Je pense que cela fonctionnera, mais je préfère que le script php gère cela et renvoie simplement le code HTML dans la page (au lieu d'utiliser javascript) si possible. – NotDan

+0

Eh bien, le script php peut gérer l'insertion du code HTML, mais pour que jsonp fonctionne, il doit appeler le callback et transmettre le code html. Le code html que vous renvoyez serait juste dans une chaîne, donc ce ne serait pas vraiment du javascript, surtout du html. –

0

Oui, c'est possible. Le moyen le plus simple est rendu partiel à cette partie embarquée. Ajoutez une nouvelle action ou un paramètre à votre action. Lorsque vous détectez il est un intégré rend juste votre partie

render :partial => 'my_embedded' 
+1

Je veux le faire à partir d'une application non ruby, et l'ai appelé à mon application ruby ​​sur un serveur web différent pour obtenir le code HTML. – NotDan

2

Ce que vous cherchez essentiellement à faire est de mettre en œuvre une API RESTful très limitée. Si vous êtes le seul à avoir accès, vous devez également implémenter une sorte de sécurité de base, telle que passer un paramètre 'secret' à l'application Rails pour vérifier le demandeur. Il suffit de fournir un itinéraire dans Rails application quelque chose comme ça (dans Rails 2.3.x):

map.connect '/php/embed', :controller => 'some_controller', :action => 'embed' 

Ensuite, dans votre contrôleur:

class SomeController < ApplicationController 
    before_filter :verify_authenticity 
    def embed 
    render :partial => "some_rails_partial", :layout => false 
    end 

    protected 

    def verify_authenticity 
    render(:text => 'Unauthorized', :status => 401) unless params[:secret] == 'somesecretkey' 
    end 
end 

Ensuite, à partir de votre application PHP, il vous suffit de faire un appel pour télécharger le contenu de l'URL au http://your.railsapp.com/php/embed?secret=somesecretkey.

Questions connexes