From 2afec412bbf63b53a51b9e211c6b6a1768ea3baf Mon Sep 17 00:00:00 2001 From: CroneKorkN Date: Sun, 18 Jan 2026 19:07:38 +0100 Subject: [PATCH] more nested routes --- app/controllers/job_logs_controller.rb | 10 +++++++--- app/views/job_logs/index.html.slim | 6 ++---- app/views/job_logs/show.html.slim | 2 +- app/views/servers/show.html.slim | 2 +- config/routes.rb | 1 + 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/app/controllers/job_logs_controller.rb b/app/controllers/job_logs_controller.rb index 5909f37..9987775 100644 --- a/app/controllers/job_logs_controller.rb +++ b/app/controllers/job_logs_controller.rb @@ -1,10 +1,10 @@ class JobLogsController < ApplicationController + before_action :set_server, only: [ :index ], if: -> { params[:server_id].present? } before_action :set_job_log, only: [ :show ] def index - @job_logs = if params[:server_id] - server = current_user.servers.find(params[:server_id]) - server.job_logs.recent + @job_logs = if @server + @server.job_logs.recent else JobLog.where(server_id: current_user.servers.pluck(:id)) .or(JobLog.where(server_id: nil)) @@ -18,6 +18,10 @@ class JobLogsController < ApplicationController private + def set_server + @server = current_user.servers.find(params[:server_id]) + end + def set_job_log @job_log = JobLog.find(params[:id]) # Authorize: user must own the server or job must be global (no server) diff --git a/app/views/job_logs/index.html.slim b/app/views/job_logs/index.html.slim index acbae85..8d0bd49 100644 --- a/app/views/job_logs/index.html.slim +++ b/app/views/job_logs/index.html.slim @@ -1,10 +1,8 @@ h1 Job Logs -- if params[:server_id] +- if @server p - = link_to "← Back to Server", server_path(params[:server_id]), class: "btn btn--secondary" - = link_to "View All Jobs", job_logs_path, class: "btn btn--secondary" -- else + = link_to "← Back to Server", server_path(@server), class: "btn btn--secondary" p.text-muted Showing all job logs for your servers - if @job_logs.any? diff --git a/app/views/job_logs/show.html.slim b/app/views/job_logs/show.html.slim index df1ed5c..6f6ca8b 100644 --- a/app/views/job_logs/show.html.slim +++ b/app/views/job_logs/show.html.slim @@ -51,6 +51,6 @@ h1 Job Log Details p.text-muted No log output available. .actions - = link_to "← Back to Jobs", @job_log.server ? job_logs_path(server_id: @job_log.server_id) : job_logs_path, class: "btn btn--secondary" + = link_to "← Back to Jobs", @job_log.server ? server_job_logs_path(@job_log.server) : job_logs_path, class: "btn btn--secondary" - if @job_log.server = link_to "View Server", server_path(@job_log.server), class: "btn btn--secondary" diff --git a/app/views/servers/show.html.slim b/app/views/servers/show.html.slim index f086e51..318a75b 100644 --- a/app/views/servers/show.html.slim +++ b/app/views/servers/show.html.slim @@ -49,7 +49,7 @@ td= job_log.started_at&.strftime("%H:%M:%S") || "-" td= job_log.duration ? "#{job_log.duration.round(1)}s" : "-" td= link_to "View", job_log_path(job_log), class: "btn btn--small" - p= link_to "View All Jobs →", job_logs_path(server_id: @server.id), class: "link" + p= link_to "View All Jobs →", server_job_logs_path(@server), class: "link" - else p.text-muted No jobs executed yet. diff --git a/config/routes.rb b/config/routes.rb index 71b1e21..c34b437 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -21,6 +21,7 @@ Rails.application.routes.draw do resources :job_logs, only: [ :index, :show ] resources :servers, only: [ :index, :show, :destroy ] do + resources :job_logs, only: [ :index ] member do post :spawn post :start