Я использую Rails 3. И мне интересно, как передать параметры в некоторые блоки в routes.rb
.
Я пытаюсь создать маршрут catch all
, который проверяет из базы данных slugs
название модели по идентификатору.
Получив 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 с iid: 4d2c7de0c5abe7f8a9000007