1

我有这样的路由:

  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创建了一个示例应用程序来说明这一点

4

0 回答 0