我有一个书籍模型,其中定义了各种路线:
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
虽然,我不确定这是否最好。
答案 0 :(得分:1)
为什么不用控制器和模型构建嵌套的Marketing
资源(记住,模型不必与AR表相关,可能是一个简单的ruby类),就像你做的那样与Page
。然后,此资源的id
将由larde_flyer
,mini_flyer
等提供,您可以通过控制器中的白名单进行验证(例如,使用before_filter)。
答案 1 :(得分:1)
是按照您的编辑路线进行小幅更改
resources :books do
resources :marketing do
collection do
get :mini_flyer
get 'larde_flyer'
end
end
end
它会工作,我认为这将是最好的