0

我有一个书籍模型,其中定义了各种路线:

resources :books do
    member do
      get 'printable_version'
    end
    collection do
      get 'search'
      get 'recently_added'
    end
    resources :pages do
      collection do
        get 'new'
        get 'edit_all'
        post 'update_all'
      end
    end
  # I put a namespace declaration here 
  # namespace :marketing do 
  #   get 'mini_flyer'
  # end
  end

我现在想要的是一个“营销”“子目录”,这意味着我希望能够访问这样的路线:

/books/24/marketing/mini_flyer或者/book/10/marketing/large_flyer

我试图将命名空间放入资源块中,但这是我从中得到的rake routes

book_marketing_mini_flyer GET    /books/:book_id/marketing/mini_flyer(.:format) marketing/books#mini_flyer

/app/controllers/marketing/books_controller.rb当我真正想要它去的时候,这条路线匹配到/app/controllers/books/marketing_controller.rb。那可能吗?

- 编辑 -

我也可以走这条路(双关语):

resources :books do
  resource :marketing, to: "books/marketing" do
    collection do
      get 'mini_flyer'
    end
  end 
end

虽然,我不确定这是否是最好的。

4

2 回答 2

1

你为什么不构建一个Marketing带有控制器和模型的嵌套资源(请记住,模型不必与 AR 表相关,可以是一个简单的 ruby​​ 类),就像你对Page. 然后id,该资源将通过larde_flyermini_flyer,您可以通过控制器中的白名单进行验证(例如,使用 before_filter)。

于 2013-07-09T17:49:17.903 回答
1

是的,只需稍加改动即可遵循您的编辑路线

resources :books do
  resources :marketing do
    collection do
      get :mini_flyer
      get 'larde_flyer'
    end
  end 
end

它会起作用,我认为这将是最好的

于 2014-10-17T08:45:10.457 回答