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.