2012-08-16 121 views
0

我创建了一个带有新闻模块的简单应用程序,并将新闻定义为单独的可挂载引擎(它也将用于其他项目)。我需要能够将引擎的管理员和用户部分安装为父应用程序的单独路径。现在我可以挂载整个引擎Rails引擎单独路由

Rails.application.routes.draw do 
    mount Jnews::Engine => "/news" 
end 

,但我想在父应用程序为/news用户和/admin/news为管理员管理和用户线路分开。这可能吗?

回答

0

我认为这取决于你为什么要这么做:

  1. 如果您想保留用户和管理员在新闻宝石独立的代码 - 那么你可能要隔离2名的命名空间,然后安装其中的每一个 - 这可能涉及将它们分别作为单独的引擎。

  2. 如果你想要的是(这是我认为你的意思?)是让代码在新闻引擎中共享,但在主应用程序中的2个不同网址上访问,基于用户是否是纯文本用户还是管理员?我会做什么在这种情况下是这样的:在发动机的路线

在主应用程序

Rails.application.routes.draw do 
    mount Jnews::Engine => "/app" 
end 

Jnews::Engine.routes.draw do 
    match "/news", :to => "some_controller#some_action" 
    match "/admin/news", :to => "some_controller#some_action" 
end 

然后在主应用程序,根据用户(用户或管理员),您可以重定向到app/newsapp/admin/news

我希望有帮助,我不太了解做条件路由。

然而,这里是路由一个很好的指南:http://guides.rubyonrails.org/routing.html

也许你可以试试一起安装与动态路由发动机线的东西?

mount Jnews::Engine => ":user_id/news" 

你在哪里结束了Jnew ::路由引擎在任user/newsadmin/news?我从来没有这样做过,所以我不知道是否有可能,但是......也许呢?

让我知道这是否有帮助:) 干杯