奇怪的Rails 3路问题

时间:2011-01-10 07:23:41

标签: ruby-on-rails routes

我正在使用simple_captcha。它找到了直到我将以下行添加到routes.rb

match ":controller(/:action)", :constraints => {:controller => /sandbox\/[^\/]+/}

验证码图像未显示,日志显示以下错误消息。

Started GET "/simple_captcha/8cdf70c193dc8823f281828f11c250e1739883da?time=1294644088" for 127.0.0.1 at Sun Jan 09 23:21:29 -0800 2011

AbstractController::ActionNotFound (The action '8cdf70c193dc8823f281828f11c250e1739883da' could not be found for SimpleCaptchaController):

为什么路线中的线会影响simple_captcha?

感谢。

萨姆

2 个答案:

答案 0 :(得分:0)

让我们假设现在不存在约束。给定:controller(/:action)匹配并尝试匹配特定控制器然后匹配操作,路由/simple_captcha/8cdf70c193dc8823f281828f11c250e1739883da匹配simple_captcha作为控制器,8cdf70c193dc8823f281828f11c250e1739883da作为操作。您可以尝试更多":controller/(:id)"作为路径匹配器。

答案 1 :(得分:0)

我通过修改一行解决了这个问题。

自:

match ":controller(/:action)", :constraints => {:controller => /sandbox\/[^\/]+/}

要:

match ":controller(/:action)", :controller => /sandbox\/[^\/]+/

我认为他们是一样的,但显然他们不是。他们有什么不同?