【问题标题】:Rails engine separate routeRails 引擎分离路线
【发布时间】:2012-08-16 10:01:03
【问题描述】:
我创建了一个带有新闻模块的简单应用程序,并将新闻定义为一个单独的可安装引擎(它也将用于其他项目)。我需要能够将引擎的管理员和用户部分作为单独的路由安装在父应用程序上。现在我可以将整个引擎安装为
Rails.application.routes.draw do
mount Jnews::Engine => "/news"
end
但我想将父应用程序上的管理员和用户路由分隔为用户的/news 和管理员的/admin/news。这可能吗?
【问题讨论】:
标签:
ruby-on-rails
routes
rails-engines
【解决方案1】:
我认为这取决于你为什么要这样做:
如果您想将用户和管理员作为单独的代码保留在新闻 gem 中 - 那么您可能希望隔离 2 个命名空间,然后安装其中的每一个 - 这可能涉及将它们本身作为单独的引擎。
1234563普通用户还是管理员?在这种情况下我会做的是这样的:
在主应用程序中
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/news 或 app/admin/news
希望对您有所帮助,我不太确定是否执行条件路由。
但是,这里有一个非常好的路由指南:http://guides.rubyonrails.org/routing.html
您也许可以尝试安装带有动态路由的引擎?
mount Jnews::Engine => ":user_id/news"
您最终将 Jnew::Engine 路由到 user/news 和 admin/news?我从来没有真正这样做过,所以我不知道这是否可能,但是......也许?
如果有任何帮助,请告诉我 :)
干杯