Перемещение логики вне поля зрения для приложения rails - PullRequest
1 голос
/ 25 марта 2011

Хорошо, так что в основном я написал это приложение, которое выполняет некоторые расчеты для каждой точки раздела.Эта часть кода обрабатывается в контроллере, так что все в порядке.Дело в том, что мне нужно, чтобы некоторые вычисления отображались на экране, чтобы я мог распечатать (на бумаге) все, что угодно

    <h2>Output for error calculations</h2>

<%
@sections.each_with_index do |section, sindex|

    # Retrieve our values
    total_distance = @total_distances[sindex]
    @total_points_calc = @total_points_sections[sindex]
    total_points = section.points.count

%>
    <h3>Section <i><%= section.name %></i></h3>
    <hr>
    <p>\( \Sigma d_{<%= section.name %>} = <%= section.name %> \)</p>
    <p>
        \( \Sigma d_{<%= section.name %>}= \)
        <% 
        section.points.each_with_index do |point, index| %>
                <%=                 
                 # if this isn't the first section and the point.distance is 0
         sindex != 0 and point.distance == 0 ? point.distance = nil : point.distance = point.distance

                 # add a + after each point that isn't the last
                 index != @total_points_calc ? point.distance.to_s + ' +' : point.distance
                %>
        <% end %>
        = <%= total_distance%>
    </p>
    <p>
    \( <%= section.name %>= \) <%= section.length %>
    </p>
    <p>e = \( \frac{<%= total_distance %> - <%= section.length %>}{<%= @total_points_calc %>} \) = <%= @errors[sindex] %></p>
<% end %>

Вот пример вывода http://img35.imageshack.us/i/screenshot20110325at133.png/ Полный исходный коднайдено в http://github.com/carvefx/Roadie

Как бы я отодвинул (часть) этой логики от взгляда в истинном духе рельсов.Синтаксис, который выглядит странно, это LaTeX, он мне нужен для вывода математики в Интернете.

1 Ответ

0 голосов
/ 25 марта 2011

Есть несколько способов переместить код в другие места.Если он принадлежит контроллеру, то вы можете переместить его в код контроллера, возможно, сделав его защищенным методом.

Если это для помощи в создании представления, для некоторых общих методов вы можете использовать помощники,такие как помощники приложений.(или вспомогательный элемент для этого представления)

Если некоторая логика принадлежит данным в БД, вы можете переместить их в модель, то есть сделать ее «тонким контроллером, толстая модель»: http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model

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