2010-09-24 13 views

Respuesta

21

rails generate model Portfolio

rails generate controller Admin::Portfolios

+1

¿Cómo se generaría la vista de andamio en este caso? –

+0

cuando genera el controlador, también crea las vistas. si pasa acciones, por ejemplo, (índice, espectáculo, etc.) al comando generar controlador, construirá esas vistas específicas y anulará las acciones del controlador. –

+0

Tienes razón Jed. Pero genera solo vistas vacías. –

5

actualiza por @ tybro0103

Use ingeniosas: Generadores: https://github.com/ryanb/nifty-generators

rails generate nifty:scaffold Admin::Portfolio 

Si ya ha generado el modelo o andamio sin espacio de nombres y quisiera para hacerlo nuevamente para el espacio de nombres de administración, puede saltear el modelo:

rails generate nifty:scaffold Admin::Portfolio --skip-model 

Si desea que el andamio para generar puntos de vista con todos los campos, por favor ponga los nombres de campo de nuevo, por ejemplo:

rails generate nifty:scaffold portfolio name:string 
rails generate nifty:scaffold Admin::portfolio name:string --skip-model 

que suelo hacer los dos juntos así que es fácil ir a la anterior comando y edítelo para agregar Admin :: & --skip-model.

+0

esto es como la página de administración que hace powerhouse – lulalala

7

@RubyDev hizo bien en sugerir el Nifty Generators de Ryan Bate, pero no sé por qué dijo usar la opción --skip-model.

Nifty Generators realmente hará exactamente lo que está pidiendo. Basta con añadir a su Gemfile:

gem "nifty-generators" 

y ejecute:

rails g nifty:scaffold Admin::Portfolio name:string 

Esto creará todo un andamio normales haría con los controladores y puntos de vista en un espacio de nombre 'admin', pero el modelo no en el espacio de nombres

+0

mi respuesta supone que el modelo existe. ¡Pero tienes razón, OP no lo mencionó! – RubyDev

1

Generadores ingeniosos era lo correcto hace algún tiempo, pero ahora cuando Rails 4 lo lanzó se quedó obsoleto. Si desea generar un andamio de administración con un modelo sin espacios de nombres, puede usar la gema rails-admin-scaffold.

+0

Debería actualizarse también ... –

1

Puede bastante simple crear sus propios generadores y hacer lo que quiera con ellos:

En Rails 4:

#config/application.rb 
config.generators do |g| 
    g.scaffold_controller :my_controller 
end 

y

#lib/generators/rails/my_controller/my_controller_generator.rb 
class Rails::MyControllerGenerator < Rails::Generators::ScaffoldControllerGenerator 
    def class_name 
    ([file_name]).map!{ |m| m.camelize }.join('::') 
    end 

    def table_name 
    @table_name ||= begin 
     base = pluralize_table_names? ? plural_name : singular_name 
     ([base]).join('_') 
    end 
    end 
end 

eliminará el modelo de los espacios de nombre.

tener en cuenta si está generando un scaffold_controller por sí solo tendrá que llamar explícitamente a su generador personalizado: rails g my_controller 'account/users'

Desafortunadamente esto sólo gestiona la controladora. Todavía estoy buscando una solución de vista.

31

Rails 4 generadores son un poco diferentes. Si usa el generador de scaffold_controller pre-compilará todos los archivos de vista, pero de manera predeterminada buscará un modelo llamado Admin :: Portfolio. Para cargar el modelo correcto, simplemente pase el nombre del modelo como argumento al generador.

$ rails g model Portfolio 
     invoke active_record 
     create db/migrate/20150822164921_create_portfolios.rb 
     create app/models/portfolio.rb 
     invoke test_unit 
     create  test/models/portfolio_test.rb 
     create  test/fixtures/portfolios.yml 

$ rails g scaffold_controller Admin::Portfolio --model-name=Portfolio 
     create app/controllers/admin/portfolios_controller.rb 
     invoke haml 
     create app/views/admin/portfolios 
     create app/views/admin/portfolios/index.html.haml 
     create app/views/admin/portfolios/edit.html.haml 
     create app/views/admin/portfolios/show.html.haml 
     create app/views/admin/portfolios/new.html.haml 
     create app/views/admin/portfolios/_form.html.haml 
     invoke test_unit 
     create test/controllers/admin/portfolios_controller_test.rb 
     invoke helper 
     create app/helpers/admin/portfolios_helper.rb 
     invoke test_unit 
     invoke jbuilder 
     create app/views/admin/portfolios 
     create app/views/admin/portfolios/index.json.jbuilder 
     create app/views/admin/portfolios/show.json.jbuilder 

Esto le dará un controlador de espacio de nombres y vistas que hacen referencia al modelo sin espacios de nombres.

+0

Gracias mysmallidea, ¿cómo se enteró de la opción --model-name? ¿Es eso algo que necesita para ver el código fuente, o hay documentos en algún lugar? –

+1

Si escribe 'rails g scaffold_controller' le mostrará todas las opciones para ese generador. – mysmallidea

+0

'rails g andamio admin/portfolio' aplica un espacio de nombre de nivel de directorio' admin/', un espacio de nombres Ruby de' Admin :: Portfolio', y una tabla llamada 'admin_portfolio', mientras que el comando de arriba (' rails g andamio Admin: : Portfolio --model-name = Portfolio') genera los mismos directorios y archivos, pero el contenido es diferente en el sentido de que los modelos no tienen el prefijo 'admin_', aunque el modelo todavía tiene el espacio de nombre como' Admin :: Portfolio'. – aks

0

La mejor solución

rails generate scaffold admin/theme name:string active:integer position:integer --migration=false 

rails generate migration CreateTheme name:string active:integer position:integer 
# add t.timestamps in migration 

Por lo tanto, no genera un prefijo en las tablas

0

Puede hacer esto ahora en los carriles (o por lo menos en 5.1) usando el siguiente comando:

rails g scaffold_controller admin/portfolio --model-name=Portfolio 

Especificando --model-name Rails no intenta adivinar automáticamente el nombre del modelo.

+0

Pero con esta opción, las vistas generadas usa los ayudantes de url incorrectos. utilizando el url helper del modelo en lugar de los helpers de admin_model (ej .: 'portfolios_path' en lugar de' admin_portifolios_path') –

+1

@JonasPorto Sí, tienes razón, cambio manualmente los archivos de vista. –

Cuestiones relacionadas