Javascripts dinamici in Rails 2.0.

Rieccomi, ieri mi sono visto uno screencast carino, qui e volevo segnalarvi anche a voi questa utile funzione.

Partiamo dal fatto che probabilmente è utile nei backend di un sito. Vi faccio un esempio, mettiamo che usate javascript per la gestione del login...

E' spesso molto utile poter intervenire con codice Ruby nei nostri JS ma fino alla precedente versione di Rails io intervenivo con un mio plugin Embedded Javascript che mi permetteva di usare i file ejs con codice ruby + javascript.

Ora tutto ciò come vi ho anticipato sopra è molto più semplice e non abbiamo bisogno di utilizzare plugin di terze parti.

Nella pagina seguente vi mostro un piccolo esempio.

Per prima cosa dobbiamo generare un controller, io lo chiamo javascripts in modo che quando lo includerò nella mia vista non dovrò inserire la path.

Quindi scriviamo nella nostra console:

$ script/generate controller javascripts

Ora apriamo javascripts_controller.rb e inseriamo un metodo come segue:

# javascripts_controller.rb

def admin
  @user = current_user
end

A questo punto nulla di più semplice creiamo un file admin.js.erb in /views/javascript/ e scriviamo:

//admin.js.erb

<% if @user.admin? %>
  alert('Benvenuto Amministratore')
<% end %>

Infine dobbiamo creare una rotta in modo tale che quando scriveremo nel nostro browser una rotta che permetta l'interpretazione del nostro nuovo JavaScript

  map.connect 'javascripts/:action.:format', :controller => 'javascripts'

Bene, se punterete il vostro browser in http://localhost:3000/admin.js dovreste vedere il codice se siete "amministratori".

Ovviamente questo è un codice d'esempio che spiega a grandi linee uno scenario di utilizzo... il resto spetta a voi e ricordate che come per le pagine html se ci sono 2 file con lo stesso nome nelle viste e nella directory public hanno precedenza i file che si trovano in public, ciò significa che se avete già un file in /public/javascripts/admin.js ha precedenza su quello che avete in /views/javascripts/admin.js.erb

Buon divertimento e se avete qualche consiglio da darmi non esitate!

Questo post è stato inviato il January 23, 2008 09:27 e Posted in , . Puoi seguire tutte le risposte tramite il Atom feed. You can leave a comments, .
Tags , , , , , ,


Commenti

Lascia una risposta

  1. michele il January 23, 2008 09:27:
    L'esempio non mi funziona. Io ho installato rails 2.0.2 su windows xp
    L'errore è :
    Routing Error

    No route matches "/admin.js" with {:method=>:get}

    Ciao Michele
  2. Davide D'Agostino il January 23, 2008 09:27:
    Mi puoi incollare il codice?

    sei sicuro di aver aggiunto in routes.rb questo:

    map.connect 'javascripts/:action.:format', :controller => 'javascripts'

Lascia un commento