【问题标题】:Rails 3 routing failuresRails 3 路由失败
【发布时间】:2010-10-08 17:15:48
【问题描述】:

我在使用 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_ 中的一个错误,用于混淆路由系统与冲突信息。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 这不是 rake route 所说的,并且该测试非常适合 url 到操作的映射。如果我删除 '/users' 前缀,那么操作映射的 url 也会开始失败。所以我认为“控制器”关键字在这方面与“资源”的作用不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多