goals {
message <<-MARKDOWN
Cuando un usuario crea un tema nuevo, o edita un tema existente, estos
son actualmente mostrados en una página con sólo ese tema. Para nuestra aplicación tendría más sentido que se nos regresara a la lista de temas.
En este paso cambiaremos el flujo de nuestra aplicación para que los usuarios sean regresados a la lista de temas después de que hayan añadido un nuevo tema (new) o editado un tema existente (update).
MARKDOWN
}
steps {
step "Modificar el controlador de temas" do
message "Abrir `app/controllers/topics_controller.rb` y observar el método create "
message "Encuentra la línea:"
source_code :ruby, "format.html { redirect_to @topic, notice: 'El tema se ha creado correctamente.' }"
message 'y cambia `@topic` por `topics_path` así:'
source_code :ruby, "format.html { redirect_to topics_path, notice: 'El tema se ha creado correctamente.' }"
message 'para que el archivo luzca así:'
source_code :ruby, <<-RUBY
def create
@topic = Topic.new(topic_params)
respond_to do |format|
if @topic.save
format.html { redirect_to topics_path, notice: 'El tema se ha creado correctamente.' }
format.json { render action: 'show', status: :created, location: @topic }
else
format.html { render action: 'new' }
format.json { render json: @topic.errors, status: :unprocessable_entity }
end
end
end
RUBY
message "En el mismo archivo, encuentra el método update. "
message "Encuentra la línea: "
source_code :ruby, "format.html { redirect_to @topic, notice: 'El tema se ha actualizado correctamente.' }"
message 'y cambia `@topic` por `topics_path` así:'
source_code :ruby, "format.html { redirect_to topics_path, notice: 'El tema se ha actualizado correctamente.' }"
end
step "Añade el mensaje flash a la vista de tu aplicación" do
message "Abre `app/views/layouts/application.html.erb`."
message "Encuentra la etiqueta de HTML `<body>` e inmediatamente agrega el siguiente código:"
source_code :ruby, <<-RUBY
<% flash.each do |name, msg| %>
<div><%= msg %></div>
<% end %>
RUBY
end
step "Confirma los cambios" do
message "Ve a <http://localhost:3000>."
end
}
explanation {
message <<-MARKDOWN
* `format.html { redirect_to topics_path, notice: 'El tema se ha creado correctamente.' }`:
* `format.html` significa que el servidor debería regresar html al navegador
* `redirect_to topics_path` quiere decir: muestra la **página de la lista de temas** cuando hayamos terminado de crear o actualizar un tema
* `notice: 'El tema se ha creado/actualizado correctamente'` imprime el mensaje dentro de la notificación flash para que sea mostrado en la lista de temas
MARKDOWN
}
next_step "hacer_el_titulo_del_tema_un_enlace"