Establecer un "caso" para "confirmar"
No estoy seguro si mi solución no es la mejor manera de resolver esto:
Mis usuarios son capaces de crear "casos". Después de un período de tiempo, debe haber una acción para dar vuelta a los casos que crean antes para confirmar.
Traté de resolver eso con la ruta "on: :member" como esta:
route.rb
resources :cases do
post 'confirm', on: :member
end
Ahora quiero crear una acción en cases_controller, donde pongo un caso 'confirmed_at' a 'time.now'. ¿Pero cómo puedo hacer eso?
Aquí está mi schema.rb para casos
create_table "cases", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
t.string "first_name"
t.string "last_name"
t.string "gender"
t.date "birthdate"
t.string "place_of_residence"
t.string "diagnosis"
t.bigint "user_id", null: false
t.datetime "confirmed_at"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["user_id"], name: "index_cases_on_user_id"
end
Pregunta hecha hace 3 años, 5 meses, 0 días - Por pixelprodigy50bb
3 Respuestas:
-
Si entiendo correctamente su pregunta entonces sólo añadir en
CasesController
:def confirm Case.where(id: params[:id]).update!(confirmed_at: Time.now) # add here whatever you want to return to the caller end
Y entonces puedes acceder a esto haciendo un POST solicitud
.../cases/:id/confirm
Respondida el Dec 16, 2020 a las 10:37 - por binaryblossom
Votos positivos: 0 | Votos negativos: 0 -
Para implementar la acción de confirmar un caso en tu controlador
cases_controller
, primero debes definir la acciónconfirm
que se ejecutará cuando se haga una solicitudPOST
a la rutaconfirm
del caso en cuestión. Aquí te dejo un ejemplo de cómo podrías hacerlo:En tu archivo
cases_controller.rb
, agrega el siguiente código dentro de la clase CasesController:ruby def confirm @case = Case.find(params[:id]) @case.update(confirmed_at: Time.now) redirect_to @case, notice: 'Caso confirmado exitosamente.' end
En este código, primero se encuentra el caso específico que se está confirmando, se actualiza el atributo
confirmed_at
con la fecha y hora actuales y finalmente se redirige a la vista del caso con un mensaje de confirmación.Recuerda que debes tener la ruta definida en tu archivo
routes.rb
de la siguiente manera:ruby resources :cases do post 'confirm', on: :member end
Una vez que hayas definido esto en tu controlador y en tus rutas, podrás confirmar un caso al acceder a la URL
cases/:id/confirm
mediante una solicitudPOST
.Espero que esta solución te sea de ayuda. ¡Déjame saber si tienes alguna otra pregunta!
Respondida el Dec 17, 2020 a las 10:32 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Puedes crear una acción en
cases_controller
para confirmar casos estableciendo el valor deconfirmed_at
aTime.now
de la siguiente manera:ruby
app/controllers/cases_controller.rb
class CasesController < ApplicationController def confirm @case = Case.find(params[:id]) @case.update(confirmed_at: Time.now) redirect_to cases_path, notice: "Caso confirmado correctamente." end endEn esta acción:
- Usamos `find(params[:id])` para recuperar el caso que se va a confirmar.
- Establecemos `confirmed_at` en el caso actual a `Time.now`.
- Guardamos los cambios en la base de datos usando `update`.
- Redirigimos al usuario a la página de casos (`cases_path`) con un mensaje de confirmación.
También es importante asegurarte de que tienes una ruta para la acción
confirm
:ruby
config/routes.rb
resources :cases do post 'confirm', on: :member endUna vez que hayas creado la acción y la ruta, puedes acceder a la acción
confirm
visitando la URL/cases/:id/confirm
para el caso que deseas confirmar. Esto establecerá el valorconfirmed_at
a la hora actual y mostrará el mensaje de confirmación.Respondida el Dec 17, 2020 a las 10:46 - por Gemini
Votos positivos: 0 | Votos negativos: 0