Rails: проблема с файлом макета application.html.erb и application_helper.rb - PullRequest
0 голосов
/ 12 апреля 2010

У меня странная ошибка, которая возникла, когда я изменил свое приложение с mongrel на mod_rails.

Мое приложение меняется с макета с двумя столбцами на макет с тремя столбцами в зависимости от того, где находится пользователь в приложении. Мое расположение приложения зависит от нескольких помощников, чтобы расположить элементы div в нужном месте.

В application_helper.rb:

  def left_column_layouts
   if  params[:controller] == "users" && params[:action] == "show" ||
       params[:controller] == "friendships" && params[:action] == "index" ||
       params[:controller] == "tags" && params[:action] == "index"
       true
   else
       false
   end 
end

У меня также есть похожая логика для расположения трех колонок.

Тогда в моем файле макета:

    <% if left_column_layouts %>
    <div class="colmask leftmenu">
    <div class="colleft">
  <%= yield %>
    </div>
    </div>
<% elsif three_columns_with_blank_sides %>
<div class="colmask threecol">
<div class="colmid">
<div class="colleft">
    <%= yield %>
<div class="col2">
</div>
<div class="col3">
</div>
</div>
</div>
</div>
<% else #Three column layout %>
    <div class="colmask threecol">
    <div class="colmid">
    <div class="colleft">
<%= yield %>
    </div>
    </div>
    </div>
<% end %>

Это работало хорошо, пока я не переключился на модовые рельсы. Я не могу себе представить, почему мод-рельсы сделали эту часть приложения просто неработающей.

Интересное примечание: я зашел на https раздел моего сайта, и макет загружался без проблем. Ребята из службы поддержки моего сервера сказали, что я должен очистить кеш, но проблема сохраняется.

Буду признателен за любую помощь!

1 Ответ

1 голос
/ 07 июня 2010

Я знаю, что это старый пост, но только для того, чтобы другие его увидели. Если я правильно понимаю, что вы хотите, я считаю, что проблема заключается в логике, используемой в вашем состоянии.

Если вы хотите отобразить левый столбец, когда контроллер: действие - это пользователи: показать или дружба: индекс или теги: индекс, ваше логическое условие неверно. Вам нужны скобки, чтобы исправить их.

Например, скажем, пользователи - это «A», шоу - это «B», дружба - «C», индекс дружбы - «D», теги - «E», а индекс тегов - «F».

Ваш код представляет собой A && B || C && D || E && F, но я верю, что вы хотите (A && B) || (C && D) || (E && F). Потому что A && B || C && D || E && F не равно (A && B) || (C && D) || (E && F), метод может вернуть неверный результат. Для большей ясности, допустим, что все параметры от A до E верны, а F ложен. Ваш метод вернет false, который должен быть истинным. Это может быть так.

...