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