0

当我将应用程序从 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 %>

在我更改为 mod rails 之前,这一直很好。我无法想象为什么 mod rails 会使应用程序的这一部分根本无法工作。

有趣的说明:我去了我网站的 https 部分,并且布局加载没有问题。我的服务器支持人员说我应该清除缓存,但问题仍然存在。

任何帮助,将不胜感激!

4

1 回答 1

1

我知道这是一个旧帖子,但只是为了确保其他人会看到它。如果我正确理解你想要什么,我相信问题出在你的条件下使用的逻辑。

如果你想在controller:action为users:show或friendships:index或tags:index时显示左列,你的逻辑条件不正确。您需要括号来纠正它们。

例如,假设用户是'A',节目是'B',友谊是'C',友谊索引是'D',标签是'E',标签索引是'F'。

您的代码代表 A && B || 建设与发展 || E && F,但我相信你想要的是(A && B) || (C&&D) || (E && F)。因为 A && B || 建设与发展 || E && F 不等于 (A && B) || (C&&D) || (E && F),该方法可能返回不正确的结果。更清楚地说,假设从 A 到 E 的所有参数都为真,但 F 为假。您的方法将返回 false,这应该是 true。情况可能就是这样。

于 2010-06-07T15:13:54.787 回答