以这种方式使用部分是不对的吗?

时间:2015-05-07 21:24:47

标签: ruby-on-rails rendering partial-views convention

好的,我现在正在开发一个rails网站。基本上它是一个静态站点(但我使用rails,因为最终我的客户端希望添加博客和帖子功能),其中有一堆不同的部分,每个部分都有不同的文章。每篇文章都设计有自己的html结构,有些有表格,div,字体着色等,所以将这些文章作为文本存储在数据库中是没有意义的。但是,当它们的父元素具有相同的共同结构时,每个部分中的每篇文章都有一个完全独立的html文件似乎没有意义(我的意思是,这是每个部分在网站,例如about或者出版物,它们将拥有自己独特的布局,但是,属于给定部分的每篇文章都将与其姐妹文章放在同一个div中。

所以我有了一个主意。我以为我会使用partials为每个部分在相同的布局中呈现唯一的内容。 (请记住,目前没有任何内容存储在数据库中。)所以我想将网站设置为具有不同视图文件夹的部分,并且,在每个视图文件夹中,我将有另一个名为“内容”的文件夹。其中我将把特定的html放在给定的路线上。

例如,我的一条“约”路线看起来像这样

    get 'about/:pagename', to: 'about#show'

将参数:pagename发送到show方法的控制器,此时我将该参数捕获到变量中(在about_controller.rb文件中)

    def show
      @content = params[:pagename].downcase
    end

然后show.html.erb视图呈现一个与@content变量同名的部分。

    <div><%= render partial: "about/content/#{@content}" %></div>

此时,视图在内容文件夹中查看调用它的特定部分,并呈现该html。

我的问题是......这是非传统的吗?我很确定我知道这个问题的答案......这是肯定的。所以我的跟进问题是多么糟糕?是否有任何巨大的网站破坏问题,这将导致我无法预测我有限的铁路经验?是否有一种更为简单,更传统的方法来显示我忽略的内容?

1 个答案:

答案 0 :(得分:1)

这是一种非常有趣的方式,但你所描述的几乎就是一个CMS,并且已经quite a few已经适合你了。< / p>

在我的脑海中,两个受欢迎的版本是Locomotive CMSRadiant CMS

无需重新发明轮子!它们也支持静态页面。