Разметки направляющих с двумя частями

Мои веб-страницы состоят из двух частей, скажем, вершина и нижняя часть (кроме заголовка и нижнего колонтитула - это последовательно через страницы). Что лучшая практика должна динамично генерировать те части в зависимости от действия?

Один подход, который я придумал, должен иметь представление для главного и частичное для нижней части; в расположении называют урожай для вершины и рендеринга неравнодушным для нижней части. Названием частичного динамично заменяют в зависимости от действия.

Не уверенный это - лучший способ сделать это.

5
задан MBO 25 January 2010 в 13:01
поделиться

2 ответа

Я думаю, что ваша идея в порядке. В ваших представлениях вы можете сделать:

<%- content_for :top do -%>
  […]
<%- end -%>

<%- content_for :bottom do -%>
  <%= render @partial_name %>
<%- end -%>

Конечно, вы должны проверить, существуют ли частичные и дают поведение по умолчанию. Но я думаю, что вы знаете об этом в любом случае.

, а затем в вашем макете:

<div id="top">
  <%= yield :top %>
</div>

<div id="bottom">
  <%= yield :bottom %>
</div>
8
ответ дан 14 December 2019 в 01:08
поделиться

Вот очень упрощенная версия представления DSL, которую я использовал в прошлом. Работал хорошо для нас. На самом деле мы параметризовали методы помощника, чтобы мы могли выбрать из множества раскладных макетов на лету (иметь страницы с боковыми краями, несколькими столбцами и т. Д.).

# app/views/shared/_screen.erb
<div id="screen">
  <div class="screen_header">
 <%= yield :screen_header %>
  </div>
  <div class="screen_body">
 <%= yield :screen_body
  </div>
  <div class="bottom">
    <%= yield :footer %>
  </div>
</div>

# app/helpers/screen_helper.rb
module ScreenHelper

 def screen(&block)
  yield block
  concat(render :partial => 'shared/screen')
 end

 def screen_header
   content_for :screen_header do
   yield
  end
 end

 def screen_body
  content_for :screen_body do
   yield
  end
 end

 def footer
  content_for :footer do
   yield
  end
 end
end

# app/views/layouts/application.erb
# only showing the body tag
<body>
  <%= yield :layout
<body>

# Example of a page
# any of the sections below (except screen) may be used or omitted as needed.
# app/views/users/index.html.erb
<% screen do %>
  <% screen_header do %>
  Add all html and/or partial renders for the header here.
  <%end%>
  <% screen_body do %>
    Add all html and/or partial renders for the main content here.
  <% end %>
  <% footer do %>
 Add all the html and/or partial renders for the footer content here.
  <% end %>
<% end %>
1
ответ дан 14 December 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: