Archive for the 'rails 2.0' Category

Apr 02 2008

In Rails einen einfachen Referer erstellen

Wer in seiner Ruby on Rails Anwendung einen Loginbereich hat kennt sicher das Problem: Wer nicht eingeloggt ist wird auf die Loginseite weitergeleitet. Wenn sich dann der User erfolgreich angemeldet hat kommt er aber nicht mehr zu der Seite, die er ursprünglich direkt aufrufen wollte.

Das lässt sich sehr einfach über einen referer lösen und über das Objekt / die Variable request kann man den kompletten HTTP Request auslesen, d.h. wenn der User auf die Seite /users/editieren wollte, dann erhält man über folgenden Aufruf die notwendigen Informationen:

  1. request.referer

Referer gibt hier folgenden Wert zurück: http://localhost:3000/user/editieren

Das ist schon zu viel, wir brauchen für einen schönen redirect nach dem erfolgreichen Login eigentlich nur den Controller und die Action, die angesprochen wurde. Das lässt sich super mit request.path_parameters bewerkstelligen. Das kann man dann in ein Methode einbauen, die prüft, ob ein User eingeloggt ist. Diese steht in der application.rb und könnte so aussehen:

  1. def authorize
  2.  unless User.find_by_id(session[:user_id])
  3.   session[:referer] = request.path_parameters
  4.   flash[:notice] = "Please Log-In"
  5.   redirect_to(:controller => "/user", :action => "login")
  6.   end
  7. end

Es wird versucht die ID des Users aus der Session auszulesen(Zeile 2), wenn das nicht klappt wird die Url, die er aufrufen wollte in die Session gelegt (Zeile 3) und der User wird erst mal zum Login (Zeile 5) geschickt. In eurer Login Methode braucht Ihr nur noch nach erfolgreichem Login folgendes einzutragen:

  1. if session[:referer]
  2.  referer = session[:referer]
  3.  redirect_to(:controller => referer[:controller], :action => referer[:action] )
  4. else
  5.  redirect_to(:controller => "/user", :action => "index")
  6. end

Wenn der User wirklich woanders her kommt dann ist der referer hash nicht leer (Zeile 1) und wir können in Zeile 3 mit dem redirect dafür sorgen, dass der User ganz angenehm auf die ursptüngliche URL weitergeleitet wird. Wenn kein referer existiert wird der User ganz normal auf eine default Seite geleitet (Zeile 5)

Ich freue mich über Kommentare, Verbesserungsvorschläge, etc.

No responses yet

Mrz 20 2008

Charts zusammen mit Ruby on Rails nutzen

Für alle, die es einfach haben wollen gibt es betreffend Charts ein super Lösung. Auf www.amcharts.com gibt es ein extrem mächtiges Flash Charting, dass man sehr einfach nutzen kann, um z.B. Balkendiagramme, Graphen und ähnliches auf einer Zeitachse im Web darzustellen.

No responses yet

Jan 02 2008

Rails 2.0.2 mit Mongrel zum Laufen kriegen

Ich hatte das Problem, das nach meinem Update auf Rails 2.0.2 und RubyGems 1.0.1 Mongrel mit einem Fehler aufgab und unter Windows nicht starten wollte.

Jetzt habe ich mir Mongrel 1.1.3 geladen und mit folgendem Befehl alle alten Mongrel Version entfernt:

gem uninstall mongrel (danach kommt ein Auswahl der Mongrel Versionen, die man dann nach und nach löschen kann)

No responses yet

Jan 02 2008

Rails 2.0 und RubyGems

Für Rails 2.0 sollte man auch daran denken RubyGems in der aktuellen Version parat zu haben. Das update lässt sich denkbar einfach durchführen:

gem update –system

Damit wird rubygems ziemlich schnell auf einen neuen Stand gebracht.

No responses yet