2011-01-07 8 views

Respuesta

7

Puede anular las plantillas que utiliza Rails para sus generadores. En este caso, simplemente coloque el archivo en lib/templates/scaffold_controller/controller.rb y modifíquelo como lo desee. La próxima vez que ejecute rails g scaffold [modelName], elegirá esta nueva plantilla de controlador y la usará.

Esto está cubierto en Section 6 of the Creating and Customizing Rails Generators guía oficial.

+1

Tu camino no funciona para mí. La segunda respuesta es correcta. – ujifgc

+3

Nota para todos aquellos que buscan las plantillas de generador predeterminadas para personalizar, en el momento de la escritura viven en GEM PATH en 'gems/railties-3.x.x/lib/rails/generators'. Puede encontrar su PISTA DE GEM (s) usando '$> gem environment' en la línea de comando. – Leo

15

La posición correcta para el archivo de controlador personalizado es lib/templates/rails/scaffold_controller/controller.rb

+0

Lo siento, lo mismo. 'rails g nombre de usuario de andamio: string' ignora el archivo. – Oleander

+0

Gracias, la ruta es correcta para rails de carriles 3.1 – ujifgc

+0

Esto es correcto para 4.x también – eprothro

12

Si simplemente desea utilizar su propia plantilla de controlador, sólo puede ponerlo en lib/templates/rails/scaffold_controller/controller.rb

Si desea reemplazar el código scaffold_controller_generator sí, por ejemplo, para que el andamio del controlador genere archivos de clase adicionales. puede crear lib/generators/rails/my_scaffold_controller/my_scaffold_controller_generator.rb con plantillas bajo lib/generators/rails/my_scaffold_controller/templates.

Recuerde señalar carriles en su nuevo scaffold_controller en config/application.rb:

config.generators do |g| 
    g.scaffold_controller = "my_scaffold_controller" 
end 

Para my_scaffold_controller_generator.rb se podía copiar de la gema railties bajo railties-3.x.x/lib/rails/generators/rails/scaffold_controller si desea modificar el comportamiento por defecto, o heredar de ella si lo que desea es agregar funcionalidad:

require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator' 

module Rails 
    module Generators 
    class MyScaffoldControllerGenerator < ScaffoldControllerGenerator 
     source_root File.expand_path("../templates", __FILE__) 

     def new_funtionality 
     end 

    end 
    end 
end 
6

Esto parece haber cambiado ligeramente con rieles 4. se puede ver qué plantilla del generador buscará en la línea de invocación cuando se genera el andamio, una nd su nombre de carpeta de la plantilla debe coincidir con esto:

rails generate scaffold blub 
... 
invoke responders_controller 

Si está utilizando rieles g blubs scaffold_controller la ubicación de la plantilla debe ser:

lib/templates/rails/scaffold_controller/controller.rb 

Si está utilizando rieles g andamio blub la ubicación de la plantilla debe ser:

lib/templates/rails/responders_controller/controller.rb 
+0

Esto lo resolvió para mí, gracias :) – Eric

+0

¡Eso lo hizo! ¡No me di cuenta de que debería mirar la línea de invocación para resolver esto! Gracias :) – Tashows

1

Si alguien i Me pregunto por qué esto no está funcionando en una instalación predeterminada de Rails 4, es porque jbuilder se está insertando en la ruta de la plantilla antes de la ubicación de anulación. No necesito jbuilder, así que lo eliminé, pero también informé de un problema en Github. Espero que se solucione pronto.

+0

pull request link? –

+0

ACTUALIZACIÓN: lib/templates/rails/scaffold_controller/controller.rb solucionó mi problema. lo tenía en lib/generators/templates/rails/scaffold_controller/controller.rb –

Cuestiones relacionadas