2013-05-03 11 views
15

Ho appena creato una nuova app da zero su rails4.0.0.rc1 con 1.9.3-p374 (che dovrebbe funzionare in base alle guide).metodo non definito `synchronize 'per nil: NilClass

Tuttavia, non riesco a fare un semplice create -action.

class Books 
    def create 
    @book = Book.new book_params 

    if @book.save 
     redirect_to @book 
    else 
     render action: :new 
    end 
    end 

    private 

    def book_params 
    params.require(:book).permit(:name, :description) 
    end 
end 

Facendo un creare qui risulta una

undefined method `synchronize' for nil:NilClass 

con l'errore indicando la linea di if @book.save.

E 'a causa di 1.9.3 o mi sono perso qualcosa?

+0

è possibile eseguire il debug o logga '@ book' per vedere che è inizializzato, va bene? –

+0

'@ book' è ok. Apparentemente, ciò accade solo quando il modello ha una validazione univoca in esso. Ho archiviato un bug (https://github.com/rails/rails/issues/10454) – pduersteler

+0

Ho sbagliato, il problema è quando si assegna un array vuoto a un'associazione, come '@book.genre_ids = [] '. – pduersteler

risposta

35

A quanto pare, non funzionava a causa della gemma amichevole. Se si utilizza friendlyId, potrebbe essere necessario specificare il bails4 branch.

gem 'friendly_id', github: 'FriendlyId/friendly_id', branch: 'rails4'

modificare: Assicurarsi di avere il ramo/versione attuale da Norman/friendly_id. Secondo il readme, deve essere almeno branch: 5.0.0-beta per funzionare con rails4.

EDIT2: ora è 5.0.0.rc2, come ho detto, assicurarsi di ottenere l'attuale ramo/versione, io non aggiornerà ovviamente questa risposta ogni volta che c'è un aggiornamento di versione. Inoltre, leggi i commenti a questa risposta, ci sono molte informazioni utili. risposta

+1

Problemi di implementazione con questa configurazione; ecco il succo con l'errore: https://gist.github.com/bbnnt/6261095/se qualche prova del perché questo sta accadendo, sarebbe fantastico! – Ben

+1

Sì, anche quello. Il ramo è cambiato. Usa 'github: norman/friendly_id 'e il secondo ramo. Attualmente esiste "5.0.0.beta", che richiede anche alcuni aggiornamenti nel controller o nel modello. Vedi https://github.com/norman/friendly_id#what-changed-in-version-50 – pduersteler

+0

Ottenuto da allora grazie! Ora un altro problema; stanno dicendo che i "finder in stile 4 FriendlyId" possono ancora essere usati aggiungendo le specifiche (da qualche parte all'inizio della loro "Cosa cambiata nella versione 5.0" nella pagina di github). Il problema è che non funziona. A est dalla mia parte.Adesso aggiungere Model.friendly.qualcosa ... ovunque – Ben

2

di pduersteler non ha funzionato per me e venuto a mancare con questo errore:

fatal: ambiguous argument 'rails4': unknown revision or path not in the working tree. 

Il README era aggiornamento sulla Sep 23, 2013 con la seguente, che ha installato senza errori:

gem 'friendly_id', '5.0.0.rc2' # Note: You MUST use 5.0.0 or greater for Rails 4.0+ 
+0

Non hai letto la modifica né i commenti, perché è quello che ho scritto lì;) – pduersteler

+1

Grazie, mi dispiace per questo, è tutto nuovo per me :) (e si stava affrettando) – David

Problemi correlati