[ruby-it] passaggio di variabili

David david.palm a iperbole.bologna.it
Gio 27 Dic 2007 16:53:44 CET


Sono d'accordo con te: queste robe vanno spostate il più possibile nel controller. Di solito li metto in app/controllers/application.rb sotto forma di before_filter.

Ti consiglio di dare un'occhiata al plugin "restful_authentication" per un esempio semplice e facile da seguire/estendere.

Per implementare view con parti riservati agli admin (o altri ruoli) penso che la soluzione più pulita consiste in una UI separata, con il codice in app/views/admin/ e app/controllers/admin/. Se proprio non riesci a staccare la funzionalità (o se non vale la pena perché è utile solo in alcune schermate) puoi almeno provare a separare la roba 'pericolosa' in un partial a sé. Se nemmeno questo è possibile puoi rendere il codice un po' più leggibile usando cose tipo "link_to_if", di modo di avere:

	<%= link_to_if admin? image_tag( 'edit.png', :alt => 'edit', :class => 'noborder'), :action => 'edit', :id => state %>

On Thu, 27 Dec 2007 14:39:02 +0100, Alessandro Montebello wrote:
> Ciao a tutti,mi sono avvicinato da poco a ruby on rails,e infatti sono
> tante le cose che non riesco a fare da solo!!!
> Ad esempio,non riesco a fare in modo che a seconda del tipo di utente
> vengano visualizzate o meno alcune azioni permesse all'utente
> stesso:vorrei che un utente "admin" abbia accesso a tutte le azioni,gli
> altri (che sono di tipo "user") solo alle azioni di lettura.L'unico modo
> in cui riesco a fare questo è controllare il tipo di utente dalla vista:
> -file:list.rhtml
> 
>     <%= if session[:admin]==true
>      link_to(image_tag( 'edit.png', :alt => 'edit', :class =>
> 'noborder'), :action => 'edit', :id => state)
>     end %>
>     <%= if session[:admin]==true
>     link_to(image_tag( 'delete.png', :alt => 'destroy', :class =>
> 'noborder'), { :action => 'destroy', :id => state }, :confirm => 'Are
> you sure?', :method => :post)
>     end%>
> 
> Come devo fare per eseguire questo controllo dal controller e
> visualizzare le azioni di modifica e cancellazione se l'utente è
> "admin"?


Maggiori informazioni sulla lista Ml