references rails generate example ruby-on-rails-3 views scaffold

ruby on rails 3 - generate - Ruby on Rails Generando Vistas



rails scaffold references (4)

Como se mencionó anteriormente por Sameers había una publicación que mostraba cómo generar las vistas. Creará todas las vistas para su modelo usando las plantillas predeterminadas de los rieles, lo cual es muy útil.

Si, como yo, quieres algo un poco más personalizable, puedes lograr lo siguiente.

Puedes crear tu propio generador para que tengas algo como esto.

rails generar vista NAME VIEW [opciones]

Para lograr esto, debes hacer lo siguiente.

rails generate generator view

Esto generará algunos archivos para usted en lib / generators / view / folder.

Abra el archivo view_generator.rb y agregue el siguiente código.

class ViewGenerator < Rails::Generators::Base source_root File.expand_path(''templates'', __dir__) argument :name, type: :string argument :action, type: :string def generate_view template "#{file_name}.html.erb", "app/views/#{folder_name}/#{file_name}.html.erb" end private def folder_name name.underscore end def file_name action.underscore end def type name.titleize.singularize end def down_type name.downcase.singularize end def render_form "<%= render ''form'', #{down_type}: @#{down_type} %>" end def render_link_back "<%= link_to ''Back'', #{folder_name}_path %>" end end</pre>

A continuación, debe crear el archivo que estamos utilizando la plantilla real utilizada en el método generate_view.

Usando la acción new como ejemplo, crea un archivolib / generators / view / new.html.erb y agrega lo siguiente.

<h1>New <%= type %></h1> <%= render_form %> <%= render_link_back %>

Personalice la vista de plantilla tanto como desee. También deberá agregar _form.html.erb. Agregue cualquier variable adicional y lógica en su archivo view_generator.rb y listo.

Es más trabajo, pero puede valer la pena si te encuentras generando vistas similares todo el tiempo.

El mejor caso de uso que se me ocurre para este enfoque es si etiqueta su plataforma en blanco y necesita generar múltiples archivos para el perfil de un cliente.

¿Hay alguna manera de generar las vistas por separado usando el comando Rails generate? También estaría dispuesto a instalar una gema para lograr esa tarea si uno existe. Básicamente, el comando de andamios me da demasiado y prefiero codificar mi controlador a mano. Sin embargo, escribir la vista de índice con una tabla para los registros no sería muy eficiente.


Si usa el generador del controlador, esto generará la acción del controlador y la vista.

rails g controller controllername new create

Esto creará acciones nuevas y creadas con sus vistas relevantes.

Aún necesita configurar sus rutas manualmente con esto.


Una situación particular es cuando desea agregar una nueva vista a un controlador existente.

En ese caso, solo use el comando normal, pero tenga cuidado de decir ''n'' cada vez que se le solicite para no sobrescribir los archivos existentes.

Por ejemplo, al agregar una vista llamada ''invite'' a un controlador existente llamado ''projects'' :

smith@ubuntuSrv16DEV4:~/railsapps/project_manager$ rails -v Rails 5.1.4 smith@ubuntuSrv16DEV4:~/railsapps/project_manager$ rails generate controller projects invite Running via Spring preloader in process 46253 conflict app/controllers/projects_controller.rb Overwrite /home/smith/railsapps/project_manager/app/controllers/projects_controller.rb? (enter "h" for help) [Ynaqdh] n skip app/controllers/projects_controller.rb route get ''projects/invite'' invoke erb exist app/views/projects create app/views/projects/invite.html.erb invoke test_unit conflict test/controllers/projects_controller_test.rb Overwrite /home/smith/railsapps/project_manager/test/controllers/projects_controller_test.rb? (enter "h" for help) [Ynaqdh] n skip test/controllers/projects_controller_test.rb invoke helper identical app/helpers/projects_helper.rb invoke test_unit invoke assets invoke coffee identical app/assets/javascripts/projects.coffee invoke scss conflict app/assets/stylesheets/projects.scss Overwrite /home/smith/railsapps/project_manager/app/assets/stylesheets/projects.scss? (enter "h" for help) [Ynaqdh] n skip app/assets/stylesheets/projects.scss smith@ubuntuSrv16DEV4:~/railsapps/project_manager$


la primera parte es el nombre del modelo / controlador, la segunda parte son las acciones.