Создание контента для приложений на основе рельсов - PullRequest
0 голосов
/ 29 апреля 2010

Я столкнулся с проблемой очистки моего приложения в Ruby on Rails. То, что у меня есть, представляет собой довольно стандартную 3-панельную раскладку верхнего и нижнего колонтитула, где разные части экрана содержат разные функции.

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

Мне было интересно, как мне упростить дизайн. Прямо сейчас у меня есть материал, который предоставляет данные для «общего» материала (в отличие от прямого контента, размещенного в центре), который вызывается из всех действий (с фильтром), но мне это не подходит. Я читал, что «компоненты» также не подходят для очевидных причин производительности.

Есть ли что-то, что больше похоже на компонентно-ориентированное (у других фреймворков такие вещи есть - Grails: , ASP.NET MVC: <% Html.RenderAction ()%>)?

С наилучшими пожеланиями, Матиас.

Ответы [ 2 ]

3 голосов
/ 29 апреля 2010

Вы можете использовать content_for для управления различным расположением макета.

layout.html.erb

<body>
  <div id="header">
  </div>

  <div id="content">

    <div id="main">
      <%= yield %>
    </div>

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

  <div id="footer">
  </div>

</body>

В ваших представлениях используйте content_for для назначения содержимого различным разделам макета:

<% content_for :side_bar do %>
  <div>
    <h1> Popular Posts </h1>
  </div>
<% end %>

<div>
  <h1> All Posts </h1>
  <% @posts.each do |post| %>
    <h2> <%= post.name %> </h2> 
  <% end %>  
</div>

Справка:

Railscast

Редактировать 1

Вы можете использовать партиалы для создания многократно используемых разделов экрана.

вид / общий / _shopping_cart.html.erb

<div>
  display the shopping cart details
<div>

просмотры / сообщения / index.html.erb

<% content_for :side_bar do %>
  <%= render :partial => 'shared/shopping_cart' %>
<% end %>

По сути вы можете использовать:

  • Фильтры для установки данных
  • content_for для установки макета
  • партиалы для отображения данных

Комбинация этих трех должна позволить вам компоновать ваше решение.

0 голосов
/ 30 апреля 2010
layout

В app/views/layouts глобальный макет application.html.erb определяет самый внешний макет (например, ваш трехпанельный дизайн).

Макет приложения может быть переопределен макетом контроллера. Например, если у вас есть контроллер задач, вы можете добавить tasks.html.erb в папку app / views / layouts. tasks.html.erb будет вашим макетом по умолчанию для любых представлений задач (индексирование, добавление, редактирование и т. Д.)

В application.html.erb или tasks.html.erb вы можете добавить два partials, например, _header.html.erb, _side.html.erb. Эти две части будут служить панелями по умолчанию для представлений.

Лучший учебник на http://guides.rubyonrails.org/layouts_and_rendering.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...