我试图使用Ruby on Rails处理一个类,以创建一个简单的控制器。从这个意义上说,我有一个单例,我需要引用它的路由。这怎么可能?
我收到的消息是:
找不到Test :: TestController的动作'foo'
控制器文件,位于“测试”文件夹中:
class Test::TestController < ApplicationController
class << self
def index
render json: {test:"Hello World!"}
end
def foo
render json: {response:"It works!"}
end
end
end
路由文件:
Rails.application.routes.draw do
namespace 'test' do
resources :test
end
get '/:id', to: 'test/test#foo'
end
这是不可能的。而且它甚至不是一个好主意。
Rails控制器以请求和env的形式接受输入,其中包含服务器设置之类的内容以及中间件已填充为初始化参数的所有内容。它们不是像PHP这样的全局变量。
控制器本身的动作实际上并不接受任何参数。因此,即使您可以将动作声明为类方法,您也绝对没有上下文。它实际上非常无关紧要,因为您必须替换整个路由器层才能调用它。
Ruby甚至也没有真正的单例类。如果您想要无法实例化的对象,请使用模块(不,您不能使模块成为Rails中的控制器)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句