ruby-on-rails – 动态CMS,就像铁轨上的ruby路线一样
发布时间:2020-12-17 04:30:50 所属栏目:百科 来源:网络整理
导读:我想创建一个像网站一样的CMS,用户可以从一些通用页面开始,即 主页 关于 联系 等 例如,从那里可以动态添加子页面 主页 文章 第1条 某事 其他东西 第2条 关于 联系 等 为了达到这个目的,我计划使用某种自我指涉关联 class Page ActiveRecord::Base belongs_to
我想创建一个像网站一样的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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |