ruby-on-rails – 动态CMS,就像铁轨上的ruby路线一样

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 动态CMS,就像铁轨上的ruby路线一样前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想创建一个像网站一样的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

猜你在找的Ruby相关文章