【发布时间】:2014-03-18 07:16:44
【问题描述】:
我们的网站应该允许显示与给定 url 相关的不同内容 .. 就像 wordpress 中的多站点一样,我们有一个安装并根据 url 提供内容。
因为有必要使用正确的语言进行路由,所以我想使用“动态路由”方法来提供正确的内容。我现在的问题是,如果它们是动态的,我找不到如何在 routes.rb 中提供正确路由的方法。
如何将请求对象“访问”或“传递”到 routes.rb 文件中的任何方法中
f.e.像这样
routes.rb
Frontend::Application.routes.draw do
DynamicRouter.load request
end
app/models/dynamic_router.rb
class DynamicRouter
def self.load request
current_site = Site.find_by_host(request.host)
Frontend::Application.routes.draw do
current_site.routes do |route|
get "#{route.match}", to: "#{route.to}"
end
end
end
end
这不起作用,因为请求在 routes.rb 中未定义
【问题讨论】:
-
那么,基本上,你想支持每条路线?
-
我想为每个网站设置动态路由.. f.e.如果对于我们的一个站点,我想调用 /category/:id 而对于另一个站点,它应该是 /category/:slug 如果我可以将请求对象从 routes.rb 传递到模型方法中,它应该能够做到这一点, 我已经知道我能做剩下的事了
-
/category/:id 和 /category/:slug 是同一条路线。唯一的区别是,第一个动态部分将存储在 params[:id] 中,第二个是 params[:slug]
-
是的,当然.. 但想象一下你有 www.site1.com 和 www.site2.com ...两者都来自一个代码库 .... 在 routes.rb 我想从中找出请求来自哪个站点并为此站点提供正确的路由
-
那么,根据域,您想使用不同的控制器吗?
标签: ruby ruby-on-rails-3 ruby-on-rails-4 routes