Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [Rails] Inizializzare variabili per la vista

    Avrei bisogno di creare variabili d'istanza con valori predefiniti da riutilizzare nella vista da specializzare in base al controller.
    L'ideale per me sarebbe fare
    codice:
    class ApplicationController < ActionController::BASE
    
       def initialize
         @styles = ["layoutbase.css"]
       end
    
    end
    
    class HomeController < ApplicationController
    
       def initialize
         @styles << "homepage_style.css"
       end
    
    end
    ma con questo non ottengo ciò che voglio (anche perchè dà errore ).
    Quale approccio dovrei usare per questo problema?

    p.s.: se initialize lo dichiaro protected è possibile fare in tal modo? (boh, la sparo )
    "Il problema delle citazioni su Internet è verificarne l'autenticità." (Winston Churchill)

  2. #2
    Altro scopo: rendere disponibile la stessa variabile a tutte le viste del controller.
    "Il problema delle citazioni su Internet è verificarne l'autenticità." (Winston Churchill)

  3. #3
    Perché variabili d'istanza? :master:
    In genere in questo caso si usa una variabile d'istanza della classe.

    Ad occhio e croce potrebbe ndarti bene una cosa del tipo.

    codice:
    class ApplicationController < ActionController::BASE
    
       catt_accessor :variable
       @@variable = ["layoutbase.css"]
    
    end
    
    class HomeController < ApplicationController
      
      @@variable << "homepage_style.css"
    
    end
    In realtà, secondo me è proprio il concetto alla base che è errato.
    Esattamente a cosa ti servirebbe questo comportamento? Potrebbero esserci altre funzioni che non conosci che già ti permettono di fare quello che stai pensando.

    Inoltre, oltre a cattr_accessor potrebbe esserti utile class_inheritable_accessor se vuoi rendere i valori ereditabili dalle sottoclassi.

  4. #4
    Sì è il comportamento che mi serviva.

    In realtà, secondo me è proprio il concetto alla base che è errato.
    Esattamente a cosa ti servirebbe questo comportamento?
    Considerando l'homepage e il layout di un sito; potrei volere in una colonna laterale la lista di, diciamo, gli ultimi articoli. E quella parte della pagina è indipendente dalla vista (dato che è parte del layout), perciò non mi pareva il caso di aggiungere qualcosa come:
    @articles = Article.find :all, :limit=>5, rder=>"data DESC"
    per ogni metodo d'azione.

    Non so se mi sono spiegato.

    Comunque grazie, è che non pensavo fosse possibile accedere alle variabili di classe dalla vista.

    Ciao
    "Il problema delle citazioni su Internet è verificarne l'autenticità." (Winston Churchill)

  5. #5
    Originariamente inviato da robyonrails
    Sì è il comportamento che mi serviva.



    Considerando l'homepage e il layout di un sito; potrei volere in una colonna laterale la lista di, diciamo, gli ultimi articoli. E quella parte della pagina è indipendente dalla vista (dato che è parte del layout), perciò non mi pareva il caso di aggiungere qualcosa come:
    @articles = Article.find :all, :limit=>5, rder=>"data DESC"
    per ogni metodo d'azione.

    Non so se mi sono spiegato.

    Comunque grazie, è che non pensavo fosse possibile accedere alle variabili di classe dalla vista.

    Ciao
    Come pensavo.
    Nel tuo caso potrebbe essere più indicato l'uso di content_for.

  6. #6
    Utilizzando le variabili di classe, ottengo questo errore:
    uninitialized class variable @@entries in ActionView::Base::CompiledTemplates
    Poi non capisco perchè se faccio
    codice:
    	@@user = User.find :first, :conditions=>["id=?", session[:user_id]]
    poi ottengo
    TypeError in HomeController#index
    Symbol as array index
    "Il problema delle citazioni su Internet è verificarne l'autenticità." (Winston Churchill)

  7. #7
    uninitialized class variable @@entries in ActionView::Base::CompiledTemplates
    Perché ActionView? Stai cercando di accederci dalla view con la notazione @@entries?

    TypeError in HomeController#index
    Posta il codice del controller.

  8. #8
    codice:
    User.find :first, :conditions=>["id=?", session[:user_id]]
    E' più opportuno scrivere

    codice:
    User.find(session[:user_id])

  9. #9
    Originariamente inviato da weppos
    Perché ActionView? Stai cercando di accederci dalla view con la notazione @@entries?
    Che notazione devo usare per accedere alle variabili di classe?
    "Il problema delle citazioni su Internet è verificarne l'autenticità." (Winston Churchill)

  10. #10
    Originariamente inviato da weppos
    Posta il codice del controller.
    E' questo che dà l'errore:
    @@user = User.find :first, :conditions=>["id=?", session[:user_id]]
    E' perchè session() non è disponibile fuori dai metodi (nel corpo della classe) ?
    "Il problema delle citazioni su Internet è verificarne l'autenticità." (Winston Churchill)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.