【问题标题】:Routing doesn't work in my application路由在我的应用程序中不起作用
【发布时间】:2012-03-23 02:10:35
【问题描述】:

我的 routes.rb 中有 rails 资源。我在控制器中创建了方法:

def test_action
end

并在 routes.rb 中添加了一行:

Test2::Application.routes.draw do
  resources :todos
  resources :docs

  match "/todos/test_action" => "todos#test_action"
end

但是当我尝试获取 ulr http://localhost:3000/todos/test_action/ 时,我收到了错误消息:

illegal ObjectId format: test_action

为什么以及如何解决它?

【问题讨论】:

  • 你把你的路线放在哪里了?据我记得,较早的路线优先于匹配后者。
  • 你能在match "/todos/test_action"周围显示代码吗?
  • 我更新了我的问题并包含了整个 routes.rb

标签: ruby-on-rails


【解决方案1】:

我敢说路由正在运行,但是无论您在(或之前)执行的操作都失败了。通过在您的操作中显式引发异常来检查这一点。例如:

def test_action
  raise "In test_action with #{params.to_yaml}!"
  ...
end

如果您没有看到引发的异常,请确保控制器上没有 before_filter 正在拦截它并抛出您的错误。

一旦你确定你正在采取行动,你就可以开始调查你的真正问题,我假设这与基于 these results 的 mongo 的使用有关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多