2009-05-07 1 views
0

Meine Website bietet ein Javascript, das die Rate des niederländischen Äquivalents des Dow Jones Index zeigt. Benutzer können dieses Skript in ihre Website einbetten.Rails: Wie kann ich mich einloggen, auf welcher Seite mein Javascript eingebettet ist?

Es sieht wie folgt aus:

<script type="text/javascript" src="http://www.aexscript.nl/r/gratis"></script> 

Der entsprechende Controller-Aktion wie folgt aussieht:

def show 
    @script = Script.find_by_code(params[:code]) 
    @rate = Rate.find(:first) 

    respond_to do |format| 
    format.js # show.js.erb 
    end 
end 

ich die URL der Website anmelden wollen, dass die Javascript eingebettet wurde. Wie kann ich das machen?

Antwort

2

eine Datenbanktabelle, die Ihre Treffer protokolliert. Wann immer jemand eine Show zeigt, logge sie ein.

Sie können meinen Code für etwas ähnliches von http://github.com/saizai/hyperdictionary - nehmen Sie die Four_oh_four Controller, Modell, & Migration.

Wenn Sie andere Informationen (zB Sie irgendwie der angemeldete Benutzer wissen? Sie wissen, wessen Link ist es?) Sie es auf diese Tabelle als Fremdschlüssel leicht hinzufügen können. Dann würden Sie so etwas wie

user.js_hits.find(:all, :select => "name, count(id) as count", :group => 'name') 

tun und es in einem einfachen Blick fallen (siehe meine app/views/four_oh_fours/index.html.erb für ein einfaches Beispiel).

+0

Danke, das ist, was ich gesucht habe. Anscheinend ist die URL der Seite, in die mein Javascript eingebettet ist, in request.env ['HTTP_REFERER']. – Mischa

+0

Oh, ja. Eine schönere Art, sich darauf zu beziehen, ist request.referer (Ich habe noch nicht den Code aufgeräumt :-P). Siehe http://api.rubyonrails.org/classes/ActionController/AbstractRequest.html#M000478 – Sai

2

Ihr Webserver sollte Ihnen Zugangsprotokolle geben; Das zeigt Ihnen jede HTTP-Anfrage, die es erhalten hat.

Dann können Sie nur für Anfragen für diese Datei grep.

Beispiel für Apache

+0

Ist es so einfach? Da das Skript in jede Webseite eingebettet werden kann (von der ich keine Ahnung habe), habe ich nicht erwartet, dass dies protokolliert wird. Ich verwende Mongrel momentan nur als Webserver. Ich werde production.log anschauen. Vielen Dank. – Mischa

+0

Richtig, das Skript kann von jedem Server der Welt referenziert werden, aber wenn sie sich auf Ihren Domainnamen beziehen, müssen die Anfragen auf Ihren Webserver kommen ... das heißt, Sie haben die Möglichkeit, ihn zu protokollieren. –

Verwandte Themen