我使用的炼油厂开发一个网站。 现在,对于在炼油厂的后端创建一个特定的页面,我想用我自己的控制器和视图。 所有用户可以用这个页面做的是设置菜单位置,标题,元信息等的URL,这个页面有看起来一样的所有其他网页。
因此,例如,菜单结构如下:
- menux
- MENU1
- MENU2
- 具体页面
- MENU2
- menux
而对于“特定的页面”的URL看起来像“区域设置/菜单1 / MENU2 /特定页面”
该网站有多种语言版本,所以我必须创建这些路由所有的语言。
目前我正在创造这样的路线:
specific_page_id = 1
Refinery::I18n.frontend_locales.each do |lang|
slugs = []
page = Refinery::Page.find_by_path_or_id(nil, specific_page_id)
# get slug for page in current language
slugs << page.translations.select { |p| p.locale == lang }.first.slug
# get all slugs from parrent pages
while !page.parent_id.blank?
page = Refinery::Page.find_by_path_or_id(nil, page.parent_id)
slugs << page.translations.select { |p| p.locale == lang }.first.slug
end
match "/:locale/#{slugs.reverse.join("/")}" => "controller#action", :via => :get, :constraints => { :locale => /#{lang}/ }
end
有了这个,我越来越到指定页面的路径在每一个语言如上述。
但问题是,当用户更改页面的名称,或在菜单中的位置,路线必须再次产生,这是不是做得太频繁。
现在的问题是,我怎么能做到这一点更动态的运行时间? 我读过一些有关限制,但我不知道这是我需要的。
谢谢你的帮助!