From 453a9137b9d6be9876dab0a7239885856d51a8a4 Mon Sep 17 00:00:00 2001 From: CroneKorkN Date: Sun, 18 Jan 2026 19:15:05 +0100 Subject: [PATCH] fix links and server form --- app/controllers/servers_controller.rb | 12 ++++++--- app/views/server_templates/index.html.slim | 2 +- app/views/server_templates/show.html.slim | 2 +- app/views/servers/index.html.slim | 3 ++- app/views/servers/new.html.slim | 31 +++++----------------- config/routes.rb | 3 +-- 6 files changed, 20 insertions(+), 33 deletions(-) diff --git a/app/controllers/servers_controller.rb b/app/controllers/servers_controller.rb index 676f9e4..cb90988 100644 --- a/app/controllers/servers_controller.rb +++ b/app/controllers/servers_controller.rb @@ -10,12 +10,17 @@ class ServersController < ApplicationController end def new - @server_template = current_user.server_templates.find(params[:server_template_id]) - @server = current_user.servers.build(server_template: @server_template) + @server_templates = current_user.server_templates.order(:name) + @server = current_user.servers.build + + if params[:server_template_id] + @server_template = current_user.server_templates.find(params[:server_template_id]) + @server.server_template = @server_template + end end def create - @server_template = current_user.server_templates.find(params[:server_template_id]) + @server_template = current_user.server_templates.find(server_params[:server_template_id]) @server = current_user.servers.build(server_params) @server.server_template = @server_template @server.status = :stopped @@ -25,6 +30,7 @@ class ServersController < ApplicationController SpawnServerJob.perform_later(@server.id) redirect_to @server, notice: "Server spawning..." else + @server_templates = current_user.server_templates.order(:name) render :new, status: :unprocessable_entity end end diff --git a/app/views/server_templates/index.html.slim b/app/views/server_templates/index.html.slim index c6da04e..9c3a222 100644 --- a/app/views/server_templates/index.html.slim +++ b/app/views/server_templates/index.html.slim @@ -16,7 +16,7 @@ td = template.overlays.count td = link_to "Edit", edit_server_template_path(template), class: "btn btn--small" - = link_to "Spawn", new_server_template_server_path(template), class: "btn btn--small btn--success" + = link_to "Spawn", new_server_path(server_template_id: template.id), class: "btn btn--small btn--success" = link_to "Delete", server_template_path(template), method: :delete, data: { confirm: "Sure?" }, class: "btn btn--small btn--danger" - else p No templates yet. diff --git a/app/views/server_templates/show.html.slim b/app/views/server_templates/show.html.slim index e0d7db0..6e917a1 100644 --- a/app/views/server_templates/show.html.slim +++ b/app/views/server_templates/show.html.slim @@ -2,7 +2,7 @@ h2 = @server_template.name = link_to "Edit", edit_server_template_path(@server_template), class: "btn btn--small" = link_to "Delete", server_template_path(@server_template), method: :delete, data: { confirm: "Sure?" }, class: "btn btn--small btn--danger" - = link_to "Spawn Server", new_server_template_server_path(@server_template), class: "btn btn--primary" + = link_to "Spawn Server", new_server_path(server_template_id: @server_template.id), class: "btn btn--primary" section.overlays h3 Overlays diff --git a/app/views/servers/index.html.slim b/app/views/servers/index.html.slim index 8d66773..dcf0b1b 100644 --- a/app/views/servers/index.html.slim +++ b/app/views/servers/index.html.slim @@ -1,6 +1,7 @@ .servers h2 Servers - p Select a template to spawn a new server: = link_to "View Templates", server_templates_path + p + = link_to "New Server", new_server_path, class: "btn btn--primary" - if @servers.any? table diff --git a/app/views/servers/new.html.slim b/app/views/servers/new.html.slim index a197901..b6c6e5d 100644 --- a/app/views/servers/new.html.slim +++ b/app/views/servers/new.html.slim @@ -1,7 +1,7 @@ .server_form - h2 Spawn New Server for #{@server_template.name} + h2 Spawn New Server - = form_with model: @server, url: server_template_servers_path(@server_template), method: :post, local: true do |f| + = form_with model: @server, url: servers_path, method: :post, local: true do |f| - if @server.errors.any? .alert.alert--error h4 = pluralize(@server.errors.count, "error") @@ -9,6 +9,10 @@ - @server.errors.full_messages.each do |msg| li = msg + .form-group + = f.label :server_template_id, "Template" + = f.select :server_template_id, options_from_collection_for_select(@server_templates, :id, :name, @server.server_template_id), { prompt: "Select a template" }, class: "form-control", required: true + .form-group = f.label :name = f.text_field :name, placeholder: "e.g., server1" @@ -17,29 +21,6 @@ = f.label :port, "Port (optional, auto-assigned if blank)" = f.number_field :port, placeholder: "Auto: 27016-27999", min: 27016, max: 27999 - .template-preview - h3 Template Configuration - - h4 Overlays - - if @server_template.overlays.any? - ol - - @server_template.template_overlays.ordered.each do |to| - li = to.overlay.name - - else - p None - - h4 Config Options - - if @server_template.config.present? - pre = @server_template.config - - else - p None - - h4 Startup Parameters - - if @server_template.startup_params.present? - pre = @server_template.startup_params - - else - p None - .form-actions = f.submit "Spawn Server", class: "btn btn--primary" = link_to "Back", servers_path, class: "btn" diff --git a/config/routes.rb b/config/routes.rb index c34b437..93df0cf 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -13,14 +13,13 @@ Rails.application.routes.draw do # Server resources resources :server_templates do resources :overlays, only: [ :create, :destroy ] - resources :servers, only: [ :new, :create ] end resources :overlays, only: [ :index, :new, :create, :destroy ] resources :job_logs, only: [ :index, :show ] - resources :servers, only: [ :index, :show, :destroy ] do + resources :servers, only: [ :index, :show, :new, :destroy ] do resources :job_logs, only: [ :index ] member do post :spawn