Rails 2 es menos DRY?

Me pregunto por qué el scaffold de Rails 2 ahora genera por separado
el formulario de new y edit, sin compartir un partial _form.

Yo imagino que esto busca facilitar que los campos editables y/o
requeridos
en creación no sean los mismos que en edición. Pero si la memoria no me
traiciona, el ya obsoleto Ajax Scaffold [1] tenía una solución que se me
antoja algo mejor que consistía en marcar los campos como editables para
creaación o actualización y el formulario los presentaba o no en función
de
estas marcas.

Navideños saludos.
Xurde

[1] http://www.ajaxscaffold.com/

On Dec 25, 2007 7:11 PM, Jaime I. [email protected] wrote:

Jaime I. escribió:

Me pregunto por qué el scaffold de Rails 2 ahora genera por separado
el formulario de new y edit, sin compartir un partial _form.

Hola Jaime

Yo me preguntaba lo mismo, y googleando[1] he encontrado que existe la
gema scaffold_form_generator que sirve justo para generar el scaffold
del formulario, que es lo que dice al autor que es útil de los scaffold.
Usa un partial para los campos del form.

Esto es lo que dice en la doc de la gem [2]:
“Scaffolding, out of the box, is really not a good idea. You‘ll generate
a bunch of stuff you might not use, and some of it isn‘t really
production-worthy. However, when you stop using it, you notice that
there‘s one part that saves you some serious time, and that‘s the form
creation. This plugin takes code from Rails’ legacy scaffold generator
and makes it available again, but this time it only builds the new and
edit forms.”

Se instala con gem install scaffold_form_generator

y luego dentro del proyecto rails se usa con

$ ruby script/generate scaffold_form Project projects

Saludos,
Amaia

[1]
http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/eb3f83cf6dde2c93
http://groups.google.com/group/rubyonrails-talk/msg/97345610b2e17ee0

[2] http://scaffoldform.rubyforge.org/


Amaia C.
Dabne Tecnologías de la Información - www.dabne.net - blog.dabne.net
*
Buscador de Subvenciones - http://buscaboe.dabne.net
Directorio de Economía Social - www.directorioeconomiasocial.es
*

Jaime Mora R. escribió:

El scaffold ha sido cambiado para ser más RESTful por default. Me
refiero al generador ya que scaffold dinamico [1] fué removido. Ahora el
scaffold está más orientado a recursos, me imagino que por ahí va la
cosa, en el algún punto se tomó la decisión por diseño.

Yo no termino de ver esta relación que comentas de tener el formulario
en un partial y que el scaffold sea más RESTful.

De todas formas para mí todo esto es anecdótico: al final siempre toca
modificar el scaffold y muchas veces, como decía Xurde, ofrecer
distintos formularios para creación y edición.


Raul M. - Freelance Web D.
http://raul.murciano.net

Raul M. wrote:

Yo no termino de ver esta relación que comentas de tener el formulario
en un partial y que el scaffold sea más RESTful.

Hola Raul,

Por supuesto que el ejemplo no demuestra alguna caracteristica RESTful,
pero si cumple con DRY sin lugar a dudas, y es precisamente lo que
pregunta Jaime I…

Por otra parte, con respecto a REST [1] :

Revisión 6768 Checado por David

  • Hemos cambiado el nombre a scaffold.
    “El generador de recursos scaffold crea un modelo, un controlador y un
    conjunto de plantillas listos para utilizarse cómo punto de partida para
    su aplicación orientada a recursos (REST). Esto basicamente le permite
    seguir las convenciones de los verbos HTTP (GET/POST/PUT/DELETE) y está
    preparado para acceso multi-cliente. Entre otras cosas, el generador
    agrega una declaración a config/routes.rb para apuntar (URLs) a este
    nuevo recurso. Si ud. crea un recurso cómo ‘scaffold post’, esto
    agregará map.resources :posts”

– A eso me refería con más orientado a REST, el scaffold es básicamente
el scaffold_resource el de la 1.2, el cuál construye el modelo, el
controlador RESTful, la migración y las rutas RESTful (map.resources).

[1]
http://dev.rubyonrails.org/browser/trunk/railties/lib/rails_generator/generators/components/scaffold/USAGE?rev=6768

Saludos.

Jaime Mora R.

Jaime I. wrote:

Me pregunto por qu� el scaffold de Rails 2 ahora genera por separado
el formulario de new y edit, sin compartir un partial _form.

Hola Jaime,

El scaffold ha sido cambiado para ser más RESTful por default. Me
refiero al generador ya que scaffold dinamico [1] fué removido. Ahora el
scaffold está más orientado a recursos, me imagino que por ahí va la
cosa, en el algún punto se tomó la decisión por diseño. De cualquier
forma en “Rolling With Rails 2.0” [2], explica cómo hacerlo DRY :

<%= render :partial => @comment,
:locals => { :button_name => “Update”} %>

<%= render :partial => @comment,
:locals => { :button_name => “Create”} %>

<% form_for([@post, @comment]) do |f| %>

Body
<%= f.text_area :body %>

<%= f.submit button_name %>

<% end %>

Observa que en lugar de :partial => “comment”, se utilizó :partial =>
@comment, de esta forma Rails infiere el nombre del partial desde el
nombre de la clase.

[1] http://dev.rubyonrails.org/changeset/7429
[2]
http://www.akitaonrails.com/2007/12/12/rolling-with-rails-2-0-the-first-full-tutorial

Saludos.

Jaime Mora R.

Hola Jaime (Mora),

Quizá no me he explicado bien:

  • sé que el scaffold anterior era más DRY porque usaba un partial para
    no duplicar código en las vistas new y edit

  • sé que el nuevo scaffold sigue la filosofía REST

…pero no veo relación alguna entre ambas cosas. Quizá entendí
equivocadamente que tú sí la veías cuando, a la pregunta de Jaime
Iniesta sobre la duplicación del formulario decías que quizá la
“RESTificación” del scaffold hubiera motivado ese cambio:

(…)Ahora el
scaffold está más orientado a recursos, me imagino que por ahí va la
cosa,(…)

IMHO ese scaffold sería igual de REST si extrajera el formulario a un
partial como hacía en versiones anteriores. De todas formas ya te digo
que no es un tema que me preocupe especialmente :slight_smile:


Raul M. - Freelance Web D.
http://raul.murciano.net

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs