0

我是 Ruby on Rails 的新手,我来自 Drupal/PHP 背景。

我正在尝试做一些简单的事情。一些页面的“静态”控制器,如关于我们、免责声明等,以及视频的“视频”控制器。

整个应用程序具有相同的外观。我试图弄清楚如何避免重复视图。

在drupal中,主题是这样的:html.tpl.php(渲染page.tpl.php)-page.tpl.php(渲染多个block.tpl.php)-block.tpl.php(渲染更多嵌套的tpls或一些html由主题函数生成)。

我觉得这很棒。

在rails中,我读到的是application.html.erb(我认为它类似于Drupal的html.tpl.php,因为它通常包含整个应用程序中可用的样式表、js等)称为“布局”。然后是“视图”,它在此布局中“产生”内容。我们在控制器中指定视图,或者它会自动获取一个。我认为视图是 Drupal 的“page.tpl.php”。

我的大部分网站都使用相同的结构,即页眉、顶部菜单、内容、右侧边栏、页脚。但是每个区域的内容会根据路径而变化。所以我正在考虑这样做:

  • “静态”和“视频”都将调用相同的视图,具有不同的变量值,即内容区域和侧边栏的值。
  • 此视图将使用“渲染”来渲染另一个视图,其中包含从控制器传递的变量子集,即它将渲染内容和侧边栏视图。
  • 如果需要,这些视图将呈现更多视图,依此类推。

我读到的另一个是partials。我似乎无法区分在另一个视图中渲染视图和渲染部分视图。

哪种方法更好?还是有更好的“Rails Way”?

4

1 回答 1

0

这是一个相当大的话题,但编辑过的亮点是

如果您想在每个页面上重复内容,例如标题或导航栏,则将其放入 layouts/application.html.erb

如果您想让您的视图与特定于该页面的内容保持一致,那么您可以使用部分。通常在视图中,我创建一个名为 shared 的文件夹,然后将我的部分文件放在那里。例如,如果我保存一个名为 _form.html.erb 的部分(确保在文件名的开头使用下划线命名部分),然后我会在我的视图中调用它

<%= render 'shared/form' %>

你也可以在布局/应用程序文件中使用部分来保持干净

这只是我的做法,我相信更有经验的 Rails 人有更好的方法

希望对你有帮助,还有什么问题就问吧

于 2012-12-07T12:29:52.153 回答