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"