Holas,

2009/2/23 Diego Algorta <[email protected]>:
>
> Hola gente,
>
> Estoy intentando mejorar el código de un (viejo) proyecto Rails heredado...
>
> Suponiendo que tenemos algo como:
>
> https://gist.github.com/f4921b74f10d45f04c38
>
> Dado un view para el action PostsController#show donde
> se muestran los datos del post, su lista de comentarios y un
> formulario para que el usuario escriba un nuevo comentario,
> buscar la mejor manera de que si el usuario escribe mal el
> captcha se le pueda informar de esto sin que el mismo pierda el
> contenido del comentario que elaboró. De esta forma el usuario
> tendrá una segunda oportunidad para ingresar el comentario sin
> tener que reescribirlo.
>
> La "dificultad" está en que no se puede hacer un redirect porque se
> perdería el contenido del comentario que escribió. Habría que hacer un
> render pero del action `show` de otro controller (el de Posts) para que
> se carguen todas las variables necesarias, etc.
>
> Alternativas (espero que se entienda):
>
> 1. guardar el contenido del comentario en la sesión y redireccionar. No
> me gusta. Chancho y además al usar la CookieStore, tengo poco espacio
> que no quiero desperdiciar.
>
> 2. guardar el contenido del comentario en la base con un flag de "draft"
> o algo así, y redireccionar. El tema es que si realmente tengo un bot
> intentando meter comentarios y fallando en el captcha... voy a tener
> cientos (miles) de inserts en la base que no quiero. Feo.
>
> 3. mover el 99% del código de `PostsController#show` a algo como
> `ApplicationController#load_post_show_data` para llamarlo desde el
> `check_captcha` y directamente hacer un render del template
> `posts_controller/show` en vez del redirect. No me convence.
>
> Tonces? alternativas?
>
> Sí... ya sé... los estoy haciendo pensar too much. :)
>
> Diego
>

Se me ocurre hacer el post vía AJAX y que degrade en el redirect en el
cual se pierden los datos.

-- 
Michel
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a