Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: Ruby On Rails

  1. #1

    Ruby On Rails

    Salve a tutti. Sto provando a creare un forum utilizzando ruby on rails e seguendo la guida di Html.it.Sono arrivato alla lezione 19,cioè alla validazione dell'input e ho riscontrato un problema che non so come risolvere.Nel momento in cui vado a definire il metodo valid? nel file app/model/author.rb,non mi funziona più il metodo "new"(che è spiegato nella lezione precendente),poichè anch'esso và ad applicare il metodo valid? e nel momento in cui va a compiere l'istruzione "if @author.save" mi dà false e non viene reindirizzato nella home rimanendo quindi nella pagina new.rhtml.Ho provato a definire il metodo valid? dopo l'end della classe author,ma non mi viene considerato poichè vede la classe concludersi lì,tralasciando il metodo valid?.E di conseguenza non mi va il metodo login.In pratica non so dove definire valid? all'interno della classe author,riporto i due modi:
    PRIMO CASO
    class Author < ActiveRecord::Base

    validates_presence_of :name, assword
    validates_uniqueness_of :name
    validates_confirmation_of assword

    has_many :messages
    end
    def valid?
    saved=Author.find_by_name(name)
    return (saved and (password == saved.password))
    end
    COSì FACENDO NON MI FUNZIONA IL METODO "LOGIN"




    SECONDO CASO
    class Author < ActiveRecord::Base

    validates_presence_of :name, assword
    validates_uniqueness_of :name
    validates_confirmation_of assword

    has_many :messages
    def valid?
    saved=Author.find_by_name(name)
    return (saved and (password == saved.password))
    end
    end
    COSì NON MI FUNZIONA IL METODO "NEW"

    Non so dove definire il metodo valid? aiutatemi!!!grazie.

  2. #2
    Nel primo caso il metodo non lo definisci mica all'interno della classe. :|

    All'interno della classe non ha importanza il luogo in cui inserisci i metodi.
    "Il problema delle citazioni su Internet è verificarne l'autenticità." (Winston Churchill)

  3. #3
    Vabbè la guida non la conosco, comunque ti sbagli: valid? non è un metodo di hook, e non viene utilizzato dal metodo new.
    codice:
    def new     # vedi chiamate a valid?
       if request.post?
         @author=Author.new(params['author'])
         if @author.save
           logged
         end
       end
    end
    Il mio consiglio: usa i test.
    Tra l'altro... sacrileeegio: la guida non parla dell'infrastruttura di test già integrata in rails.
    "Il problema delle citazioni su Internet è verificarne l'autenticità." (Winston Churchill)

  4. #4
    nn è così...anke il metodo se io creo e salvo un oggetto lui mi entra cmq nella classe author e m và a controllare tutti i metodi compreso quello "valid",ke nn dovrebbe considerare ma lo fa...cmq un'altra cosa,come posso modificare la classe?io lo faccio con il notepad ma credo ke si possa fare con ruby...ho provato ad aprirlo scrivendo "ruby author.rb" ma mi dice ke l'application controller nn è inizializzato

  5. #5
    nessuno mi risponde? ...è pure la ho seguito la guida di questo sito...speravo ke qualcuno mi aiutasse ...

  6. #6
    Ah forse ho capito. Ti mi stai dicendo che il metodo valid? produce un errore, e perciò tutta la classe è inutilizzabile ?

    Per la seconda domanda: eeeeh? Stai chiedendo come modificare il sorgente: o con l'editor o con Ruby? Che senso ha? (non credo tu stia parlando nè di reflection nè di metaprogrammazione).
    Con "ruby author.rb" non apri il sorgente, lo interpreti.
    "Il problema delle citazioni su Internet è verificarne l'autenticità." (Winston Churchill)

  7. #7
    No la classe funziona.Il problema è la posizione in cui vado a definire il metodo "valid" all'interno della classe.Mi spiego:se lo definisco prima dell'end,non m funziona più la redirezione(logged) del metodo "new",quindi dopo la registrazione di un utente m rimane sempre alla stessa pagina.Mentre se lo definisco dopo l'end,nn mi funziona la redirezione(logged) del metodo "login".

    Per quanto riguarda la seconda domanda ti ho chiesto come modificare il sorgente(il file con la classe author) con il linguaggio ruby.Grazie

  8. #8
    Scusa, riusciresti a incollare il codice completo che se no non ci capisco niente? Ma non capisco, cmq ti ho detto: per la definizione del metodo è indifferente la posizione all'interno della classe.

    Cosa vuol dire "modificare il sorgente con il linguaggio Ruby" ? Tutto quel codice che hai scritto è Ruby.
    Quindi la risposta a "come modificare il sorgente con il linguaggio Ruby" è: apri il file (author.rb) con un editor e scrivi codice Ruby.

    Secondo me hai un po' di confusione in testa.
    "Il problema delle citazioni su Internet è verificarne l'autenticità." (Winston Churchill)

  9. #9
    secondo me tu non leggi quello che scrivo con attenzione.Il codice lo postato prima,è sopra e ho messo pure i due casi.Per quanto riguarda il sorgente,mi sono spiegato male hai ragione,volevo chiederti come modificarlo utilizzando la "ruby console" inclusa nel pacchetto instant rails che voi,nella guida,avete consigliato di scaricarmi.Lo so che si può fare con l'editor,ma sono dei file ".rb" e credo che sia meglio modificarli con la console,se si può.

  10. #10
    [QUOTE]Originariamente inviato da enricomail
    secondo me tu non leggi quello che scrivo con attenzione.
    [QUOTE]
    Ti assicuro di aver letto e riletto più volte.

    Il codice lo postato prima,è sopra e ho messo pure i due casi.
    E' il codice intero?

    codice:
    class Author < ActiveRecord::Base
    
    validates_presence_of :name, :password
    validates_uniqueness_of :name
    validates_confirmation_of :password
    
    has_many :messages
    end # finisce la definizione della classe
    def valid?
    saved=Author.find_by_name(name)
    return (saved and (password == saved.password))
    end
    # COSì FACENDO NON MI FUNZIONA IL METODO "LOGIN"
    Sì dà il caso che al primo end la definizione della classe finisce (come ho già detto), quindi valid? è esterno ad essa. Per forza non ti funziona il metodo login (che non hai incollato, tra l'altro).

    codice:
    #SECONDO CASO
    class Author < ActiveRecord::Base
    
      validates_presence_of :name, :password
      validates_uniqueness_of :name
      validates_confirmation_of :password
    
      has_many :messages
      
      def valid?
        saved=Author.find_by_name(name)
        return (saved and (password == saved.password))
      end
    end
    Qui è interno alla classe.
    Ma come fai a dire che non funziona il metodo "new", dato che non ci sono chiamate a "valid?" ? Alla cui domanda (che ho già fatto), tu hai risposto
    anke il metodo se io creo e salvo un oggetto lui mi entra cmq nella classe author e m và a controllare tutti i metodi compreso quello "valid",ke nn dovrebbe considerare ma lo fa
    Con questo dici che facendo "Author.new" il metodo new non ti funziona; in che senso? ottieni errore? non ti crea l'oggetto?

    Per quanto riguarda il sorgente,mi sono spiegato male hai ragione,volevo chiederti come modificarlo utilizzando la "ruby console" inclusa nel pacchetto instant rails che voi,nella guida,avete consigliato di scaricarmi.
    Voi chi? Io non centro niente.

    Lo so che si può fare con l'editor,ma sono dei file ".rb" e credo che sia meglio modificarli con la console,se si può.
    Coooosa? Modificare i sorgenti dalla console? Di solito si programma scrivendo in un editor.
    "ruby script/console" non serve per modificare alcun che... carica una parte della tua applicazione rails per consentire di fare delle prove ed eseguire test con il codice scritto. Certamente, avendo a disposizione le classi di modello, puoi inserire record nel database tramite la creazione di nuovi oggetti (cioè record secondo la mappatura ORM) e la chiamata a save() (o direttamente con ClasseModello.create() ).

    :master:
    "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 © 2025 vBulletin Solutions, Inc. All rights reserved.