Ruby on rails 使用字符串和变量的Ruby switch语句比较无效

Ruby on rails 使用字符串和变量的Ruby switch语句比较无效,ruby-on-rails,string,comparison,switch-statement,Ruby On Rails,String,Comparison,Switch Statement,我在控制器中启动了一些变量,如下所示 class ServicesController < ApplicationController before_action :set_service, only: [:show, :edit, :update, :destroy] UPLOAD_N_DATA = "1", UPLOAD_T_DATA = "2", UPLOAD_C_DATA = "3", UPLOAD_E_DATA = "4", UPLOAD_V_DATA = "5"

我在控制器中启动了一些变量,如下所示

 class ServicesController < ApplicationController
   before_action :set_service, only: [:show, :edit, :update, :destroy]
UPLOAD_N_DATA = "1", 
UPLOAD_T_DATA = "2", 
UPLOAD_C_DATA = "3", 
UPLOAD_E_DATA = "4",
UPLOAD_V_DATA = "5"

为什么会这样?我认为这与对象比较有关。但是如何使用变量使其工作呢


谢谢。

您使用尾随逗号定义常量,这是错误的,因为它将
['1','2','3','4','5']
数组分配给
上传数据
常量。应该是:

UPLOAD_N_DATA = "1"
UPLOAD_T_DATA = "2"
UPLOAD_C_DATA = "3"
UPLOAD_E_DATA = "4"
UPLOAD_V_DATA = "5"
   THIS WORKS:

   # GET /services/
   # GET /services/1.json
   def show
puts "Service Id received = #{params[:id]} of class #{params[:id].class}"
case(params[:id])
    when "1"
        puts "Service to upload N Data evoked"
    when "2"
        puts "Service to upload T Data evoked"
    when "3"
        puts "Service to upload C Data evoked"
    when "4"
        puts "Service to upload E Data evoked"
    when "5"
        puts "Service to upload C Data evoked"
    else
        puts "Error in Service Controller Show Services.\n Unknown Service Requested"
end
   end
UPLOAD_N_DATA = "1"
UPLOAD_T_DATA = "2"
UPLOAD_C_DATA = "3"
UPLOAD_E_DATA = "4"
UPLOAD_V_DATA = "5"