有沒有一種方法可以查找給定控制器操作的HTML?例如,我希望能夠將GET與索引和PUT關聯起來進行更新。我希望能夠根據路線動態地做到這一點。在rails中查找HTML動作
我可以使用Controller.action_methods獲取每個控制器的操作方法,但是這會返回一組操作方法的字符串。理想情況下,我想要的是一個形式的散列:{:action => :verb}
。
有沒有一種方法可以查找給定控制器操作的HTML?例如,我希望能夠將GET與索引和PUT關聯起來進行更新。我希望能夠根據路線動態地做到這一點。在rails中查找HTML動作
我可以使用Controller.action_methods獲取每個控制器的操作方法,但是這會返回一組操作方法的字符串。理想情況下,我想要的是一個形式的散列:{:action => :verb}
。
:method
是:conditions
哈希的一部分,你可以傳遞給map.connect
map.connect 'post/:id', :controller => 'posts', :action => 'create_comment',
:conditions => { :method => :get }
閱讀耙路線的任務,這將提供洞察:
如:
users GET /users(.:format) {:controller=>"users", :action=>"index"}
我承擔這是你在做什麼?
這就是我正在尋找的數據,但現在我想如何得到它。我正在嘗試爲所有需要用戶身份驗證的操作生成簡單的測試用例。看到我以前的問題:http://stackoverflow.com/questions/1137589/is-it-possible-and-or-advisable-to-generate-tests-dynamically-in-rails。我試圖查詢Controller的行爲,並查找它們與哪個謂詞關聯以在該示例中生成actions變量。 – 2009-07-16 19:52:01
提供了有益的對象與所有的控制器,操作和相關的動詞
def all_routes
@all_routes ||= Rails.application.routes.routes.map do |route|
{ alias: route.name,
path: route.path.spec.to_s,
controller: route.defaults[:controller],
action: route.defaults[:action],
verb: route.verb.source.to_s.delete('$'+'^')
}
end
end
我期待實質上查詢地圖找一個動作的方法。因此,在您的示例中,我希望能夠以「create_comment」開頭並找到post:post。 – 2009-07-16 19:18:44