确定路径是否作为Rails控制器中的路由存在

Chr*_*her 3 routing ruby-on-rails

我想知道是否可以将任意路径映射到路由

recognized_request_for完成了我想要的东西,但我不能让它在我的控制器中工作.

具体来说,我如何执行recogn_request_for或从我的控制器完成相同任务的东西?

swr*_*bel 23

我无法评论克里斯托弗的解决方案,但对于Rails 3来说,电话是

Rails.application.routes.recognize_path
Run Code Online (Sandbox Code Playgroud)

代替

ActionController::Routing::Routes.recognize_path
Run Code Online (Sandbox Code Playgroud)

例:

def path_exists?(path)
  begin
    Rails.application.routes.recognize_path(path)
  rescue
    return false
  end

  true
end
Run Code Online (Sandbox Code Playgroud)

  • @PRWhitehead而不是仅仅拒绝投票并发表负面评论,建议要挽救哪个异常呢? (2认同)

Chr*_*her 8

解:

@related_page_path = '/' + @page.path
begin
  ActionController::Routing::Routes.recognize_path(@related_page_path, :method => :get)
rescue
  @related_page_path = nil
end
Run Code Online (Sandbox Code Playgroud)