我想是這樣的:如何檢查軌道路線存在在視圖中
if has_route?(:controller => 'posts', :action => 'index')
...
我怎樣才能在視圖中做到這一點?
---- ----解決方案
def has_route? options
Rails.application.routes.routes.map{|route| route.defaults}.include?(options)
end
我想是這樣的:如何檢查軌道路線存在在視圖中
if has_route?(:controller => 'posts', :action => 'index')
...
我怎樣才能在視圖中做到這一點?
---- ----解決方案
def has_route? options
Rails.application.routes.routes.map{|route| route.defaults}.include?(options)
end
我知道這是那種你想要的逆的,但你可以做這樣的事情:
Rails.application.routes.recognize_path('/posts')
將返回一個像這樣的哈希:
{:controller=>"posts", :action=>"index"}
但我不知道給它散列並返回路徑的API。
您可以通過ActionDispatch::Routing::RouteSet API查看。
此外,請注意,Rails.application.routes.routes
返回一個Journey :: Routes對象數組,因此您可以將此數組用於您想要的控制器/動作配對。但似乎這個API應該已經存在。如果沒有,也許它應該。 :)
我已經看過了,不幸的是我沒有找到recognition_path的反向方法。 –
寫一個,並做一個拉請求。 :) – ipd
是的。我找到解決方法,謝謝。 Rails.application.routes.routes.map {|路線| route.defaults} .include?({:controller =>'posts',:action =>'index'})---> true –
你可以嘗試像respond_to?("[name of rails routing method]")
如何檢查一個散列,而不是一個字符串,而不是一個方法的存在:) –
意圖實際上是檢查基於路線(如controller_action_path())的rails方法的存在,但我看到你在說什麼。你可以創建一個包裝url_for([你的散列])的幫助函數並捕獲路由錯誤。如果出現錯誤,則不存在路徑,否則就是。 –
我已經想過了,但希望有一個現成的解決方案。 –
通常路由測試以這種方式
it "routes to #index" do
get("/projects").should route_to("projects#index")
end
資源的支架將產生例如你可以看看here
我的問題在視圖中使用,而不是用rspec進行測試。我想用這個來幹我的看法。 –
你想測試這條路線嗎? – megas
是的。我有一個散列,我想檢查一個路線的存在。 –