【问题标题】:Is it wrong to use partials in this way?以这种方式使用部分是错误的吗?
【发布时间】: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


    【解决方案1】:

    这是一种非常有趣的方式,但您所描述的几乎是一个 CMS,并且已经有 quite a few 非常适合您。

    在我脑海中最流行的两个是Locomotive CMSRadiant CMS

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

    【讨论】:

    • 我已经调查过了...但是根据我使用 CMS(主要是 Wordpress)的经验,它们限制了您对网站设计以及网站上的 JavaScript 和动画的控制.这是所有 CMS 通用的还是 Wordpress 通用的?
    • 甚至 wordpress 也不会以这种方式限制您,因为您始终可以编写自己的主题。 CMS 唯一会限制您的是数据保存到服务器的方式。也就是说,机车比 Wordpress 更可定制
    • 是的。但至少对于 Wordpress,这似乎需要学习一种我没有使用过 (php) 经验的全新语言,但是看起来 radiant 和 locomotive 都是用 Ruby on Rails 编写的,所以我一定会尝试一下!跨度>
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多