Rails条件路由

时间:2009-03-29 21:24:16

标签: ruby-on-rails routes conditional

我正在尝试设置一个用户创建向导,用户只能转到与用户所在向导中当前步骤对应的页面。

我已经整理了状态机功能。当前状态存储在DB中。这不是问题

问题是如何将用户重定向到正确的页面。

我首先尝试了一个前置过滤器,但这导致了重定向循环。对此的解决方案很混乱。

我尝试的下一件事是使用redirect_to将请求发送到一个操作,然后重定向到正确的页面。这导致了DoubleRenderError,因为我重定向了两次。我认为redirect_to是一个新的http请求,但似乎不是。

我现在想知道是否可以直接在路线中设置这种功能。我需要访问DB才能获得当前状态。我不知道这是怎么做的,或者是否可能

有什么想法吗?

谢谢

3 个答案:

答案 0 :(得分:2)

我不确定我是否完全理解你的问题。

但是,你得到双重渲染错误的原因是因为继续执行了一个简单的redirect_to ruby​​代码。在某些时候,这段代码试图再次渲染数据(因此DoubleRenderError)。

您可能想要使用:

redirect_to [...] and return false

这将阻止任何后续代码被执行,因此会阻止DoubleRenderError。

祝你好运!

答案 1 :(得分:0)

我认为这个问题和我昨天经历的一样(我在Rails 2.1上),我的解决方案可以在my blog, it's really simple !找到

答案 2 :(得分:0)

我想,:constraints => {{1}}的{​​{3}}定义可能正是您所寻找的