Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails &引用;ActionController::RoutingError:没有路由匹配;没有嵌套资源时出错_Ruby On Rails_Ruby On Rails 3_Routes - Fatal编程技术网

Ruby on rails &引用;ActionController::RoutingError:没有路由匹配;没有嵌套资源时出错

Ruby on rails &引用;ActionController::RoutingError:没有路由匹配;没有嵌套资源时出错,ruby-on-rails,ruby-on-rails-3,routes,Ruby On Rails,Ruby On Rails 3,Routes,我正在将一个项目从一个代码库迁移到另一个代码库,以清理大量累积的积垢,转移到新的表示层,等等 其中一个关系是规范的用户有许多顺序,我在路由中将其表示为嵌套资源。rb: resources :users do resources :orders end 所以我有了命名的路径user\u orders\u path(@user)。如果用户有订单,它可以正常工作,但是如果用户没有订单,尝试渲染路由会出现以下错误: ActionController::RoutingError (No route

我正在将一个项目从一个代码库迁移到另一个代码库,以清理大量累积的积垢,转移到新的表示层,等等

其中一个关系是规范的
用户有许多顺序,我在
路由中将其表示为嵌套资源。rb

resources :users do
  resources :orders
end
所以我有了命名的路径
user\u orders\u path(@user)
。如果用户有订单,它可以正常工作,但是如果用户没有订单,尝试渲染路由会出现以下错误:

ActionController::RoutingError (No route matches {:controller=>"orders", 
:user_id=>#<User id: 472, account_id: nil, first_name: "Denis", last_name: 
"Haskin", ...etc... , last_sign_in_ip: "127.0.0.1">})
from /Users/dwhsix/.rvm/gems/ruby-1.9.3-p0@zmx2/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb:532:in `raise_routing_error'
from /Users/dwhsix/.rvm/gems/ruby-1.9.3-p0@zmx2/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb:528:in `rescue in generate'
from /Users/dwhsix/.rvm/gems/ruby-1.9.3-p0@zmx2/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb:520:in `generate'
from /Users/dwhsix/.rvm/gems/ruby-1.9.3-p0@zmx2/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb:561:in `generate'
from /Users/dwhsix/.rvm/gems/ruby-1.9.3-p0@zmx2/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb:586:in `url_for'
from /Users/dwhsix/.rvm/gems/ruby-1.9.3-p0@zmx2/gems/actionpack-3.2.3/lib/action_dispatch/routing/url_for.rb:148:in `url_for'
from /Users/dwhsix/.rvm/gems/ruby-1.9.3-p0@zmx2/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb:213:in `user_orders_path'
from (irb):24
ActionController::RoutingError(没有路由匹配{:controller=>“订单”,
:user_id=>#})
来自/Users/dwhsix/.rvm/gems/ruby-1.9.3-p0@zmx2/gems/actionpack-3.2.3/lib/action\u dispatch/routing/route\u set.rb:532:in'raise\u routing\u error'
来自/Users/dwhsix/.rvm/gems/ruby-1.9.3-p0@zmx2/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb:528:in“生成中的救援”
来自/Users/dwhsix/.rvm/gems/ruby-1.9.3-p0@zmx2/gems/actionpack-3.2.3/lib/action\u dispatch/routing/route\u set.rb:520:in'generate'
来自/Users/dwhsix/.rvm/gems/ruby-1.9.3-p0@zmx2/gems/actionpack-3.2.3/lib/action\u dispatch/routing/route\u set.rb:561:in'generate'
来自/Users/dwhsix/.rvm/gems/ruby-1.9.3-p0@zmx2/gems/actionpack-3.2.3/lib/action\u dispatch/routing/route\u set.rb:586:in'url\u for'
来自/Users/dwhsix/.rvm/gems/ruby-1.9.3-p0@zmx2/gems/actionpack-3.2.3/lib/action_dispatch/routing/url_for.rb:148:in'url_for'
来自/Users/dwhsix/.rvm/gems/ruby-1.9.3-p0@zmx2/gems/actionpack-3.2.3/lib/action\u dispatch/routing/route\u set.rb:213:in'user\u orders\u path'
起始(irb):24
(我提供了在
rails控制台中测试的完整堆栈跟踪;由于某些原因,我没有在服务器日志中获得此错误的完整堆栈跟踪。)

我有点不知所措,无法解释(和解决)这个问题,我希望这可能会给某人敲响警钟。我在一个新的空项目中对此进行了测试,当然效果很好。我想下一步我会尽量精简这些模型和控制器,并开始添加片段,直到错误再次出现。因为我是在现有代码上迁移的,所以很难将其隔离到一小段示例代码中


(冒着可能混淆问题的风险,我已经开始在这个项目中使用Ryan Bates的,我有点怀疑它可能在这里发挥作用,但我确实去掉了它并在没有它的情况下进行了测试,没有改变这种不正确的行为。)

事实证明,用户/订单关系完全是一个骗局
user.rb
有一个
to_param
方法:

def to_param
  login
end
对于某些用户,它返回零。这就是导致命名路由帮助器失败的原因。碰巧在没有订单的用户和
to_param
返回nil的用户之间存在高度相关性,当我开始尝试为用户集成订单显示时,这个错误首次出现