2011-08-21 14 views
5

Estoy usando la gema best_in_place con Rails 3.0.9. Parece que tengo todo funcionando. Seguí las instrucciones de instalación y puedo hacer clic en un elemento, editarlo y guardarlo todo en el mismo lugar con ajax.No se pueden mostrar los errores de validación con la gema best_in_place

Sin embargo, cuando se prueba la funcionalidad de validación pero se ingresan datos falsos, no aparece el mensaje de error.

No estoy seguro de si esto se debe hacer mágicamente a través de javascript, o si se supone que debo proporcionar algún tipo de etiqueta div o algo donde se puede mostrar el mensaje de error.

Al registrar esto en Firebug, obtengo la respuesta JSON correcta. En mi caso puedo ver

[ "Las deudas tiene longitud no válida"]

pero esto no quede rendido en cualquier lugar.

¿Hay algo más que deba poner en la vista para generar el error de validación? Se supone que debe mostrarse a través de purr.js. ¿Es necesario hacer nada, además de poner los archivos JavaScript en mi directorio público, se inicio en best_in_place application.js y poner

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

En la vista?

+0

Parece que no hay ninguna respuesta al respecto. Me pregunto si se trata de que nadie tenga la respuesta o más probable de que mi pregunta no sea lo suficientemente clara. Cualquier sugerencia sobre cualquier otra información que debería proporcionar es bienvenida. – Oscar

+0

¿Cómo es su controlador? ¿Estás llamando a reply_with_bip en caso de que la actualización falle? – rkb

Respuesta

3

Su problema es similar al mío: revisando cuidadosamente en Railscast #302, noté que el mensaje de error se estaba imprimiendo pero en la parte inferior izquierda de la página, era difícil de ver y fácil de perder.

El código purr CSS que figura en esa página lo formateará y lo mostrará más claramente en la página web.

Espero que esto ayude.

2

Tu habría que añadir la acción del controlador derecho

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

o utilizar el ayudante respond_with_bip lugar. Y no se olvide de definir la clase .purr CSS, el "Best In Place" joya utiliza el plugin de jQuery Purr para mostrar mensajes de error:

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

gracias increíbles. –

1

Tenga cuidado. Agregue el complemento best_in_place.purr en lugar de jquery.purr en application.js. Funcionó para mí

//= require jquery 
//= require jquery_ujs 
//= require bootstrap 
//= require best_in_place.purr 
//= require best_in_place 
//= require_tree . 
Cuestiones relacionadas