我有这样的路由:
namespace :folio do
resources :portfolios do
resources :portfolio_items do
resources :images
end
end
end
现在请不要因为堆积很深而激怒我。这是一个像对象一样的 mongo db 持久树,这些级别都保存在根对象中。
让我感到困惑的是,生成的路由读取类似于
folio_portfolio_portfolio_item
但是当我从 urlhelper 请求一个 url
url_for [@portfolio, @portfolio_item]
我得到一个很好的例外告诉我
undefined method `hash_for_folio_portfolio_folio_portfolio_item_path' for #<Module:0x0000000492fc30>
看到那里的第二个“作品集”了吗?知道如何摆脱它吗?不幸的是,提供 :url => 不是一个选项,因为这会使我的表单视图增加三倍,在此之前我宁愿完全放弃命名空间。但不情愿如此:这是一个 Rails 引擎,我想避免冲突。
所以,换句话说...
我想
= form_for [@portfolio, @portfolio_item] do |form|
“只是”工作:)。这要求太多了吗?
观察 这样的路由让我有点前进:
resources :folio_portfolio_items, :controller=>Folio::PortfolioItemsController do
虽然丑得要命,但它会生成好的网址。问题是,当我想访问其中一个时,我得到了
ActionController::RoutingError (uninitialized constant Folio::Folio):
不管这意味着什么...
作为旁注,我认为发生这种情况很奇怪。我认为我的映射控制器到域是预期的......
我在https://github.com/janlimpens/testroutes创建了一个示例应用程序来说明这一点