我正在使用Rails 3.我想知道如何將參數傳遞給routes.rb
中的某些塊。如何將params傳遞給Rails路徑中的塊?
我想要做的是製作一個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:[email protected]):
Rendered /Users/amr/.rvm/gems/[email protected]/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.2ms)
預期是指上崗與IID#查看:4d2c7de0c5abe7f8a9000007
我可以刪除`proc`這樣` :controller => Slug.find_by_iid(params [:id])。model.pluralize`但問題仍然是如何獲得`params [:id]`值。當我嘗試運行應用程序時,它會拋出錯誤`../config/routes.rb:6:in`在中的塊:未定義的局部變量或方法`params'爲#(NameError)` –
amrnt
2011-01-11 22:30:56
當我做它`控制器=> proc {Slug.find_by_iid(params [:id])。model.pluralize} .call`它扔我`/config/routes.rb :6:在中的塊(2級)中:未定義的局部變量或方法`params'爲#(NameError)`ALSO! –
amrnt
2011-01-11 23:15:06