加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读