Otras Páginas

Expandir Todo

redirigir_a_la_lista_de_temas_despues_de_crear_uno.step

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"