Rails 3路由失败

时间:2010-10-08 17:15:49

标签: ruby-on-rails ruby-on-rails-3

我在使用Rails 3路由时遇到了一些问题,我无法理解为什么事情无法正常工作。

例如,我有一个功能测试包括:

assert_routing("/store/users/me@here.com/license/ch7bHtrx",
               {:controller => 'store/users', :action => 'license', :email => 'me@here.com', :id => 'ch7bHtrx' })

产生

ActionController::RoutingError: No route matches {:controller=>"store/users", :email=>"me@here.com", :id=>"ch7bHtrx", :action=>"license"}
/test/functional/store/users_controller_test.rb:32:in `test_should_get_license_download'

这很有趣,因为它实际上在控制器方向的路径中工作,routes.rb包括

namespace :store do
  controller :users do
    get 'users/:email/license/:id' => :license, :email => VALID_EMAIL_REGEX_FOR_ROUTE, :as => :license_download
  end
end

和rake路线产生

store_license_download GET    /store/users/:email/license/:id(.:format)   {:action=>"license", :controller=>"store/users", :email=>/([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)/i}

我是一个相对Rails的新手,所以我觉得没有资格说出某些东西是错误的,但是我根本无法得出任何解释,rake路线会有这些条目,但却无法实际路由方式。

非常感谢任何帮助。

修改:删除了一个示例问题,该问题最终成为form_for中的一个错误,使路由系统混淆了信息冲突。

1 个答案:

答案 0 :(得分:0)

我通常使用资源路线,但我认为旧式的规则是相同的。您添加到块内的URL。所以
namespace :store do
  controller :users do
     get 'action' => :action
  end
end
成为'/ store / users / action'映射到:users_controller内的action。