【发布时间】:2011-04-02 07:37:22
【问题描述】:
我有一个基于 Rails 的站点,它具有基本的两列布局。右侧是带有不同(我们只是说)垂直小部件的侧边栏。根据您访问的页面,可以包含、排除小部件并以不同的顺序排列。例如:
主页(应用程序)
页面内容...
边栏
- 小部件 A
- 小部件 B
- 小部件 C
第 X 页
页面内容...
边栏
- 小部件 D
- 小部件 A
- 小部件 C
第 Y 页
页面内容...
边栏
- 小部件 E
- 小部件 A
- 小部件 B
- 小部件 C
现在我显示页面特定小部件的方式不是很干。我正在为每个页面创建一个布局,然后一遍又一遍地复制和粘贴相同的 HTML 部分和小部件部分。例如:
application.html.erb
<%= render :partial => 'shared/html_header' %>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<%= render :partial => "shared/head" %>
<body>
<div id="outer">
<%= render :partial => 'shared/banner' %>
<%= render :partial => 'shared/nav' %>
<div id="main">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%;">
<tr style="vertical-align:top;">
<td style="width:759px;">
<%= render :partial => 'shared/content' %>
</td>
<td><%= image_tag("spacer.gif", :width => "5") %></td>
<td style="width:252px;">
<%= render :partial => 'shared/widget_a' %>
<%= image_tag("spacer.gif", :height => "10") %>
<%= render :partial => 'shared/widget_b' %>
<%= image_tag("spacer.gif", :height => "10") %>
<%= render :partial => 'shared/widget_c' %>
<%= image_tag("spacer.gif", :height => "10") %>
</td>
</tr>
</table>
</div>
<%= render :partial => 'shared/footer' %>
</div>
<%= render :partial => 'shared/user_voice_widget_script' %>
<%= render :partial => 'shared/google_analytics_script' %>
</body>
</html>
我基本上只是对其他页面布局重复此模式,但使用特定于页面的小部件。看起来不太干。
我认为必须有一种更有效的方法来做到这一点。有什么建议吗?
【问题讨论】:
标签: ruby-on-rails layout views controller dry