rails 路由不起作用

rails routing does not work

我在 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 v2.3.8

创建 routes 的方法

请修改路线为。

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

希望对你有所帮助

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):

Why in the logs I see action as "v2" instead of "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'