4
说我在一个控制器中,我想获得它支持的动作和HTTP动词的列表,我将如何做?例如。如何从Rails中的控制器中访问路由信息(HTTP动词,动作名称等)?
controller.actions # { [ :show, :get ], [ :update, :put ], . . . }
或者等同物。
说我在一个控制器中,我想获得它支持的动作和HTTP动词的列表,我将如何做?例如。如何从Rails中的控制器中访问路由信息(HTTP动词,动作名称等)?
controller.actions # { [ :show, :get ], [ :update, :put ], . . . }
或者等同物。
事情是这样的:
controller = "users"
controller_routes = []
Rails.application.routes.routes.each do |route|
if route.to_s.include?(":controller=>\"#{controller}\"")
controller_routes << route
end
end
puts controller_routes
你的想法。
要列出HTTP方法(GET,POST,PUT,DELETE)的有效期为每个控制器的操作运行:
rake routes
它会列出该HTTP方法配置为所有控制器。
您更改的HTTP方法通过编辑/config/routes.rb
的RailsGuide包括一个很好的解释here使用。
这不包括HTTP动词,它看起来邪恶杂乱,你知道一种方法来查找他们的控制器? – 2012-01-11 00:12:41
你的意思是HTTP动词?如果是HTTP动作(GET,PUT),你可以得到它们:[“POST”,“/users(.:format)”,“{:action => \”create \“,”,“:controller => \“users \”}“]看到这是POST在用户中创建。问题是路由不由控制器处理。它们由ActionDispatcher处理,而不是由控制器公开。 – daniel 2012-01-11 00:21:34
HTTP动词是GET,POST等。 。 。路由处理动词和控制器的路径。我需要做的是找到一种方法来获得动作和相关的动词。我可以通过获取控制器的所有公共实例方法来获取动作,但似乎应该有一种相对干净的方式来获取与动作相关的动词。 – 2012-01-11 00:52:14