Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 添加路由以管理多页内容_Ruby On Rails - Fatal编程技术网

Ruby on rails 添加路由以管理多页内容

Ruby on rails 添加路由以管理多页内容,ruby-on-rails,Ruby On Rails,我需要你的帮助。 我有一个小型CMS,我的CMS提供文章、新闻和评论。 目前我有单页内容,但现在我想添加多页功能。 这看起来很简单,但事实并非如此,现在我将尝试向您展示如何管理我的内容 我的内容类 class Content < ActiveRecord::Base has_many :elements, class_name: 'ContentElement' end 内容元素可以是“文本”类型、视频、图像等等 与我的内容关联的第一个ContentElement的“主体”是我在视图

我需要你的帮助。 我有一个小型CMS,我的CMS提供文章、新闻和评论。 目前我有单页内容,但现在我想添加多页功能。 这看起来很简单,但事实并非如此,现在我将尝试向您展示如何管理我的内容

我的内容类

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