【发布时间】:2011-06-07 11:40:20
【问题描述】:
我正在使用 Rails 3。我想知道如何将参数传递给 routes.rb 中的某些块。
我要做的是创建一个catch all 路由,从slugs 数据库中通过id 检查它的模型名称。
在获得model name 后,我将其复数以获取控制器名称。
match '/:id', :controller => proc { Slug.find_by_iid(params[:id]).model.pluralize }, :action => :show
表slugs
model iid
----- -----
post 4d2c7de0c5abe7f8a9000007
item 4d2c7de0c5abe7f809000004
当我尝试访问像 /4d2c7de0c5abe7f8a9000007 这样的页面时,我收到了这个错误:
Started GET "/4d2c7de0c5abe7f8a9000007" for
127.0.0.1 at 2011-01-12 00:04:31 +0200
ActionController::RoutingError (wrong constant name #<Proc:0x0000010337c310@):
Rendered /Users/amr/.rvm/gems/ruby-1.9.2-p136@rails3/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.2ms)
预期是指向帖子#view with iid: 4d2c7de0c5abe7f8a9000007
【问题讨论】:
标签: ruby-on-rails routing ruby-on-rails-3