Lo nuevo de Rails 6: Actiontext

Probando action text en rails 6
¿Qué es actiontext?
Actiontext es una componete de rails 6 que nos permite crear y editar texto enriquecido de forma sencilla, esto nos puede servir para crear un blog, agregar comentarios de usuarios o incluso enviar un mail.
Creando un blog con actiontext
Instalamos Rails 6 beta 6.0.0.beta1
gem install actiontext-6.0.0.beta1
Creamos un proyecto para nuestro blog con rails 6
rails _6.0.0.beta1_ new blog --pre --database=postgresql
Añadimos la gema image_processing para los previews de las imágenes que subiremos
gem 'image_processing', '-> 1.2'
Luego ejecutamos bundle
en el terminal.
El siguiente paso consiste en instalar action_text, esto lo logramos ejecutando en el terminal en la carpeta del proyecto:
rails action_text:install
Obtendremos como resultado
Adding trix to app/javascript/packs/application.js append app/javascript/packs/application.js Adding @rails/actiontext to app/javascript/packs/application.js append app/javascript/packs/application.js Copied migration 20190123044227_create_active_storage_tables.active_storage.rb from active_storage Copied migration 20190123044228_create_action_text_tables.action_text.rb from action_text
Veremos que se agregó el editor trix (escrito en JS) a nuestros archivos js, además se generaron dos migraciones. Podemos correr las migraciones con:
rails db:migrate
Luego crearemos un scaffold de artículo donde subiremos el contenido, aquí solo agregaremos el título.
rails g scaffold post title
Nuevamente corremos las migraciones con:
rails db:migrate
Luego agregaremos al modelo de post el método de clase has_rich_text
has_rich_text :content
Agregaremos a la vista parcial views/posts/_form.html.erb
dentro del bloque del form un campo de texto con:
<div class="field"> <%= form.label :content %> <%= form.rich_text_area :content %> </div>
Para poder guardar el valor en la base de datos tenemos que asegurarnos que el campo content
no sea descartado por los strong_param, para eso dentro del controller de posts app/controllers/posts_controller.rb
agregaremos al método .permit
dentro de post_params
el nombre de nuestro atributo :content
Debería quedar:
params.require(:post).permit(:title, :content)
Finalmente lo último que tenemos que modifcar es la vista para mostrar el contenido del post. Para lograr esto modificaremos el archivo dentro de views/posts/show
y agregaremos:
<%= @post.content %>
Nuestro último paso es probar todo, levantamos el servidor con rails s
y entramos a localhost:3000/posts
, vamos a crear un nuevo post y arrastramos algunas imágenes sobre nuestro editor y disfrutamos mientras actiontext hace el resto del trabajo.
Director de DesafíoLatam. Ingeniero Civil Informático de la Universidad Federico Santa María. Emprendedor lean, dedicado al desarrollo de una mejor web con ruby on rails. Fanático de los números y las métricas, la música y la fotografía.