Rails:视图中的DRY

时间:2010-04-07 20:02:17

标签: ruby-on-rails views dry

HY,

我在视图/布局中有一个有2个cols的布局,然后在每个视图中我都有content_for:main_col和content_for:side_col。问题是我在content_for:side_col

中有超过5个具有相同内容的视图

你对如何做到这一点有了更好的想法吗?谢谢

2 个答案:

答案 0 :(得分:5)

将其放入局部并在需要的位置渲染部分。

应用/视图/共享/ _sidebar.html.erb

<% content_for :sidebar do %>
  Hello, I am your neighbourhood friendly sidebar!
<% end %>

应用/视图/某处/ else.html.erb

<%= render :partial => "shared/sidebar" %>

答案 1 :(得分:0)

如果你需要将变量传递给你的部分(我猜你做的那样),使用帮助器这是一种非常巧妙的方法来干你的代码:

# app/views/shared/_side_col.html.erb
<% content_for :side_col do %>
  <ul>
    <% menu_items.each do |item| %>
      <li><%= item %></li>
    <% end %>
  </ul>
<% end %>

# app/helpers/application_helper.rb
def side_col(menu_items)
  render 'shared/_side_col', :menu_items => menu_items
end

# app/views/your/view.html.erb
<%= side_col your_menu_items_for_this_view %>