Hola de nuevo :-)

2009/2/23 Michel Martens <[email protected]>:
> 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.
>

Dependiendo de la versión de Rails, se puede usar Nested Attributes:
http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes

Saludos,


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

Responder a