2011-08-21 14 views
5

Sto utilizzando la gemma best_in_place con Rails 3.0.9. Sembra che tutto funzioni. Ho seguito le istruzioni di installazione e sono in grado di fare clic su un elemento, modificarlo e salvare tutto in un unico punto con ajax.Impossibile visualizzare errori di convalida con best_in_place gem

Tuttavia, durante il test della funzionalità di convalida ma inserendo dati fittizi, il messaggio di errore non viene visualizzato.

Non sono sicuro se questo dovrebbe essere eseguito magicamente tramite javascript, o se dovrei fornire una sorta di tag div o qualcosa in cui il messaggio di errore può essere visualizzato.

Controllando in questo in firebug, sto ottenendo la risposta corretta JSON. Nel mio caso posso vedere

[ "Debiti ha lunghezza non valida"]

ma questo non viene reso ovunque.

C'è qualcos'altro che ho bisogno di mettere nella vista per rendere l'errore di convalida? Dovrebbe essere visualizzato tramite purr.js. Ho bisogno di fare nulla oltre mettere i file javascript nel mio elenco pubblico, iniziare best_in_place in application.js e mettere

<p> 
    <b>Debts:</b> 
    <%= best_in_place @prospect, :debts, :type => :input %> 
</p> 

Dal punto di vista?

+0

Non sembrano avere alcuna risposta su questo. Mi chiedo se è il caso che nessuno abbia la risposta o più probabilmente la mia domanda non sia abbastanza chiara. Qualsiasi suggerimento su qualsiasi altra informazione che dovrei fornire è il benvenuto. – Oscar

+0

Che aspetto ha il tuo controller? Stai chiamando respond_with_bip nel caso in cui l'aggiornamento fallisca? – rkb

risposta

3

Il tuo problema suona proprio come il mio: controllando attentamente allo Railscast #302, ho notato che il messaggio di errore stava stampando ma nella parte inferiore sinistra della pagina, difficile da vedere e facile da perdere.

Il codice purr CSS elencato quella pagina verrà formattato e visualizzato in modo più chiaro sulla pagina web.

Spero che questo aiuti.

2

tuo dovrebbe aggiungere la giusta azione di controllo

def update 
    .. 
    respond_to do |format| 
    format.json { render json: @prospect } 
    end 
end 

o utilizzare il respond_with_bip helper invece. E non dimenticate di definire la classe .purr CSS, la gemma "Best In Place" utilizza il plugin jQuery Purr per visualizzare messaggi di errore:

.purr { 
    position: fixed; 
    top: 30px; 
    right: 100px; 
    width: 250px; 
    padding: 20px; 
    background-color: #FCC; 
    border: solid 2px #C66; 
    &:first-letter { text-transform: uppercase; } 
} 
+0

fantastico grazie. –

1

Prenditi cura. Aggiungi il plugin best_in_place.purr invece di jquery.purr in application.js. Ha funzionato per me.

//= require jquery 
//= require jquery_ujs 
//= require bootstrap 
//= require best_in_place.purr 
//= require best_in_place 
//= require_tree . 
Problemi correlati