【发布时间】:2015-05-07 21:24:46
【问题描述】:
好的,我现在正在用 Rails 开发一个网站。基本上它是一个静态站点(但我使用 Rails 是因为最终我的客户想要添加博客和帖子功能),它有一堆不同的部分,每个部分都有不同的文章。每篇文章都设计有自己的 html 结构,有些有表格、div、字体颜色等,因此将这些文章作为文本存储在数据库中是没有意义的。然而,当它们的父元素将具有相同的公共结构时,为每个部分中的每篇文章拥有一个完全独立的 html 文件似乎也没有意义(我的意思是,每个部分都在像 about 或 Publications 这样的网站将拥有自己独特的布局,但是,属于给定部分的每篇文章都将与其姊妹文章放在同一个 div 中。
所以我有了一个想法。我想我会使用部分来在每个部分的相同布局中呈现独特的内容。 (请记住,当前没有任何内容存储在数据库中。)所以我正在考虑将站点设置为具有不同的视图文件夹,并且在每个视图文件夹中,我将有另一个名为“内容”的文件夹我将在其中放置给定路线的特定 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。
我的问题是......这是非常规的吗?我很确定我知道这个问题的答案……是的。所以我的后续问题是它有多糟糕?是否存在任何严重的网站崩溃问题,这会导致我以有限的 Rails 经验无法预见?是否有更简单、更传统的方法来显示我忽略的内容?
【问题讨论】:
标签: ruby-on-rails rendering partial-views convention