动态根路径路由

时间:2011-04-28 13:44:49

标签: ruby-on-rails ruby routes rack

如果它取决于......天气,当前时间或其他什么,我如何使用动态根路由?

我想到了两种方法:ApplicationController级别和Rack重定向。

  • 使用第一个解决方案,我将检查我的动态状态并重定向到特定页面。
  • 只要使用路线级别
  • ,第二种解决方案就更具原生性

例如

root :to => proc { |env| [ 302, {'Location'=> some_code }, [] ] }

但我希望看到的是如何将简单的lambda用于路由选项,如:

root :to => "mycontroller#myaction", :some_param => proc{ DateTime.now.hour }

它不起作用,但它显示了我的期望

2 个答案:

答案 0 :(得分:1)

我不确定为什么在控制器中完成同样的事情时需要在路由表中初始化一个参数:

params[:some_param] = DateTime.now.hour

您也可以根据需要在控制器内部进行重定向,而不是使用redirect_to方法严重依赖路由表。

答案 1 :(得分:0)

有没有人解决过这个问题?尽管这个问题已经有十年历史了,但我仍然没有在 Rails 中看到一种干净的方法。我有根路径的路由约束。我的需要是,一旦他们到达该操作,就会检查一些条件,并基于该请求最终应由另一个控制器操作处理。我可以做 redirect_to 但浏览器中显示的 URL 也会改变,这不是我想要的。如果他们访问 abc.com,他们仍应保留在 abc.com,而不是重定向到 abc.com/home 或其他内容。有没有人知道这个?