more nested routes

This commit is contained in:
CroneKorkN 2026-01-18 19:07:38 +01:00
parent 6909497996
commit 2afec412bb
Signed by: cronekorkn
SSH key fingerprint: SHA256:v0410ZKfuO1QHdgKBsdQNF64xmTxOF8osF1LIqwTcVw
5 changed files with 12 additions and 9 deletions

View file

@ -1,10 +1,10 @@
class JobLogsController < ApplicationController class JobLogsController < ApplicationController
before_action :set_server, only: [ :index ], if: -> { params[:server_id].present? }
before_action :set_job_log, only: [ :show ] before_action :set_job_log, only: [ :show ]
def index def index
@job_logs = if params[:server_id] @job_logs = if @server
server = current_user.servers.find(params[:server_id]) @server.job_logs.recent
server.job_logs.recent
else else
JobLog.where(server_id: current_user.servers.pluck(:id)) JobLog.where(server_id: current_user.servers.pluck(:id))
.or(JobLog.where(server_id: nil)) .or(JobLog.where(server_id: nil))
@ -18,6 +18,10 @@ class JobLogsController < ApplicationController
private private
def set_server
@server = current_user.servers.find(params[:server_id])
end
def set_job_log def set_job_log
@job_log = JobLog.find(params[:id]) @job_log = JobLog.find(params[:id])
# Authorize: user must own the server or job must be global (no server) # Authorize: user must own the server or job must be global (no server)

View file

@ -1,10 +1,8 @@
h1 Job Logs h1 Job Logs
- if params[:server_id] - if @server
p p
= link_to "← Back to Server", server_path(params[:server_id]), class: "btn btn--secondary" = link_to "← Back to Server", server_path(@server), class: "btn btn--secondary"
= link_to "View All Jobs", job_logs_path, class: "btn btn--secondary"
- else
p.text-muted Showing all job logs for your servers p.text-muted Showing all job logs for your servers
- if @job_logs.any? - if @job_logs.any?

View file

@ -51,6 +51,6 @@ h1 Job Log Details
p.text-muted No log output available. p.text-muted No log output available.
.actions .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 - if @job_log.server
= link_to "View Server", server_path(@job_log.server), class: "btn btn--secondary" = link_to "View Server", server_path(@job_log.server), class: "btn btn--secondary"

View file

@ -49,7 +49,7 @@
td= job_log.started_at&.strftime("%H:%M:%S") || "-" td= job_log.started_at&.strftime("%H:%M:%S") || "-"
td= job_log.duration ? "#{job_log.duration.round(1)}s" : "-" td= job_log.duration ? "#{job_log.duration.round(1)}s" : "-"
td= link_to "View", job_log_path(job_log), class: "btn btn--small" 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 - else
p.text-muted No jobs executed yet. p.text-muted No jobs executed yet.

View file

@ -21,6 +21,7 @@ Rails.application.routes.draw do
resources :job_logs, only: [ :index, :show ] resources :job_logs, only: [ :index, :show ]
resources :servers, only: [ :index, :show, :destroy ] do resources :servers, only: [ :index, :show, :destroy ] do
resources :job_logs, only: [ :index ]
member do member do
post :spawn post :spawn
post :start post :start