我想创建一个像网站一样的CMS,用户可以从一些通用页面开始,即
>主页
>关于
>联系
>等
例如,从那里可以动态添加子页面
>主页
>文章
>第1条
>某事
>其他东西
>第2条
>关于
>联系
>等
为了达到这个目的,我计划使用某种自我指涉关联
class Page < ActiveRecord::Base belongs_to :parent,:class_name => 'Page' has_many :children,:class_name => 'Page' end
我正在努力的一件事是路线生成.因为页面可以动态添加,我需要为这些页面动态生成路由,并且无法知道页面可以嵌套多少层次
所以,如果我从主页开始:
/
然后开始添加页面,即
/用品/第一条/某事/东西,否则/另一个,事情
如何使用rails路由模型实现类似的功能?
解决方法
一旦你有办法为你的页面记录生成URL字符串(我将把那部分留给你),你可以只映射config / routes.rb中的每一页:
Page.all.each do |page| map.connect page.url,:controller => 'pages',:action => 'show',:id => page end
并让观察者挂钩页面模型,以便在发生变化时重新加载路由:
class PageObserver < ActiveRecord::Observer def reload_routes(page) ActionController::Routing::Routes.reload! end alias_method :after_save,:reload_routes alias_method :after_destroy,:reload_routes end
不要忘记编辑config / environment.rb来加载观察者:
# Activate observers that should always be running config.active_record.observers = :page_observer
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。