我在使用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中的一个错误,使路由系统混淆了信息冲突。
答案 0 :(得分:0)
我通常使用资源路线,但我认为旧式的规则是相同的。您添加到块内的URL。所以
namespace :store do
controller :users do
get 'action' => :action
end
end
成为'/ store / users / action'映射到:users_controller内的action。