【问题标题】:rails routing does not work导轨路由不起作用
【发布时间】:2015-09-26 00:11:09
【问题描述】:

我在 routes.rb 中明确定义了以下路线

map.book_preview_v2 '/books/v2/:id', :controller => 'books', :action => 'show_v2'

但是,在日志中,我看到以下消息:

2015-09-25 16:49:04 INFO (session: f561ebeab121cd1c8af38e0482f176b8)
method /books/v2/519869.json (user: xxx:669052) params:
{"controller"=>"books", "action"=>"v2", "id"=>"519869",
"format"=>"json"}

ActionController::UnknownAction (No action responded
to v2. Actions: some_method_1, some_method_2,
some_method_3, some_method_4, some_method_5, **show_v2**,
some_method_6, and some_method_7):

我是否遗漏了一些关于配置的约定?为什么在日志中我将操作视为“v2”而不是“show_v2”?

【问题讨论】:

  • 记录一下,您使用的是哪个版本的 Rails?

标签: ruby-on-rails ruby routes ruby-on-rails-2


【解决方案1】:

ActionController::UnknownAction (没有动作响应 v2。动作: some_method_1, some_method_2, some_method_3, some_method_4, some_method_5、show_v2、some_method_6 和 some_method_7):

为什么在日志中我看到操作是“v2”而不是“show_v2”?

按照Rails 2默认路由

map.connect ':controller/:action/:id'

它期望v2action,但您在路由中将show_v2 定义为action。将您的 route 更改为以下应该可以工作

map.connect '/books/show_v2/:id', :controller => 'books', :action => 'show_v2'

【讨论】:

  • 这是有道理的。任何其他方式我可以将我的网址保留为 /books/v2/:id 并将我的方法名称保留为 show_v2?
  • @riship89 等等。你能用完整的routes.rb更新你的问题吗?
【解决方案2】:

更新

这是为 rails v2.3.8 创建routes 的方法

请将路线修改成。

map.connect '/books/v2/:id', :controller => 'books', :action => 'show_v2'

希望对你有帮助。

【讨论】:

  • 它背后的理论是什么?
  • 对不起,我没有展示理论和文档。我已经更新了我的答案。在该文档中,您可以找到详细说明。 @eirikir:感谢您的 cmets。我会小心写答案的。
  • 感谢您的帮助,但无法正常工作。它与 Rails 约定冲突,并且正在调用 controller=>"books" action=>"v2"。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
  • 2014-04-29
相关资源
最近更新 更多