我想要这样的事情:
if has_route?(:controller => 'posts', :action => 'index')
...
我如何在视图中执行此操作?
----解决方案----
def has_route? options
Rails.application.routes.routes.map{|route| route.defaults}.include?(options)
end
答案 0 :(得分:1)
我知道这与你想要的相反,但你可以这样做:
Rails.application.routes.recognize_path('/posts')
哪个会返回这样的哈希:
{:controller=>"posts", :action=>"index"}
但我不知道有一个API给它哈希并返回路径。
您可以查看ActionDispatch::Routing::RouteSet API。
另外,请注意Rails.application.routes.routes
返回一个Journey :: Routes对象数组,因此您可以map
将此数组用于所需的控制器/操作配对。但似乎这个API应该已经存在。如果没有,也许它应该。 :)
答案 1 :(得分:0)
您可以尝试respond_to?("[name of rails routing method]")
答案 2 :(得分:0)
通常路线以这种方式测试
it "routes to #index" do
get("/projects").should route_to("projects#index")
end
资源的脚手架将生成用于测试路径的spec文件,例如,您可以查看here