Ruby on rails 添加路由以管理多页内容
我需要你的帮助。 我有一个小型CMS,我的CMS提供文章、新闻和评论。 目前我有单页内容,但现在我想添加多页功能。 这看起来很简单,但事实并非如此,现在我将尝试向您展示如何管理我的内容 我的内容类Ruby on rails 添加路由以管理多页内容,ruby-on-rails,Ruby On Rails,我需要你的帮助。 我有一个小型CMS,我的CMS提供文章、新闻和评论。 目前我有单页内容,但现在我想添加多页功能。 这看起来很简单,但事实并非如此,现在我将尝试向您展示如何管理我的内容 我的内容类 class Content < ActiveRecord::Base has_many :elements, class_name: 'ContentElement' end 内容元素可以是“文本”类型、视频、图像等等 与我的内容关联的第一个ContentElement的“主体”是我在视图
class Content < ActiveRecord::Base
has_many :elements, class_name: 'ContentElement'
end
内容元素可以是“文本”类型、视频、图像等等
与我的内容关联的第一个ContentElement的“主体”是我在视图中呈现的内容的“主体”。当然是单页,因为现在我可以为每个内容添加一个ContentElement
添加多页功能可能看起来很简单:如果需要重写某些通用方法,我会添加一个类,并为每个内容生成更多ContentElement,第一个ContentElement是第一页,其他的是第二页、第三页,等等
class MultipageContent < Content
end
我需要为每个页面内容保留此结构,但我还需要为多页面内容调整相同的结构。所以我必须找到一种方法来生成这样的路线:
# http://www.example.com/magazine/11856/This-is-my-content-title/this-is-the-second-page
对于单个页面,内容相同:
# http://www.example.com/magazine/11856/This-is-my-content
match '/magazine/:id/:permalink' => 'contents#show', via: :get, as: :content
# http://www.example.com/magazine/11856/This-is-my-content
match '/magazine/:id/:permalink' => 'contents#show', via: :get, as: :content
对于多页的第一页,内容相同:
# http://www.example.com/magazine/11856/This-is-my-content
match '/magazine/:id/:permalink' => 'contents#show', via: :get, as: :content
# http://www.example.com/magazine/11856/This-is-my-content
match '/magazine/:id/:permalink' => 'contents#show', via: :get, as: :content
第二,第三。。。多页内容的页面我必须获得如下匹配:
# http://www.example.com/magazine/11856/This-is-my-content-title/this-is-the-second-page
这是我的内容
是“content”类元素的段塞标题,而这是第二页
是相应ContentElement的段塞名称
我也可以接受这样一条独特的路线
# http://www.example.com/magazine/11856/This-is-my-content-title/this-is-the-content-element-name
但是使用此路由时,必须仅与MultipageContent类的实例一起工作,对于其他类型的内容,无法修改路由
你能帮帮我吗?我想帕兰蒂斯应该能帮上忙
match '/magazine/:id/:permalink(/:addl_permalink)' => 'contents#show', via: :get, as: :content
这样,如果您发送addl_permalink,您将获得第二或第三页,或者第一页。Parantheses被rails路由理解为可选的
对于多页内容的每一页,是否有db中的记录?在这种情况下,为了可读性,您应该在route中添加它。像
match '/magazine/:id/:permalink(/:sub_page_id/:addl_permalink)' => 'contents#show', via: :get, as: :content
我想paranethes应该做这个把戏,
match'/magage/:id/:permalink(/:addl_permalink)=>“contents#show”,通过::get,as::content
。这样,如果您发送addl_permalink,您将获得第二或第三页,或者第一页。Parantheses被rails routes理解为可选的。对于多页内容的每一页,您是否有db中的记录?在这种情况下,为了可读性,您应该在route中添加它。比如,match'/magazine/:id/:permalink(/:sub_page_id/:addl_permalink)=>“contents#show”,via::get,as::content
@VamsiKrishna非常感谢。看起来很容易。添加回复!很高兴我能帮上忙…如果我使用这些路线会发生什么match'/magazine/:id/:permalink'=>'contents#show',via::get,as::content
match'/magazid/:id/:permalink/add#params'=>'contents#multipage#show',via::get,as::content
我想在多页上呈现另一个视图,如果视图不同,可以这样做。但是,我会将multipage\u show更改为as::multipage\u content
:)
match '/magazine/:id/:permalink(/:sub_page_id/:addl_permalink)' => 'contents#show', via: :get, as: :content