0

アプリをmongrelからmod_railsに変更したときに発生した奇妙なエラーがあります。

私のアプリは、ユーザーがアプリ内のどこにいるかに応じて、2列のレイアウトから3列のレイアウトに変わります。私のアプリケーションレイアウトは、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

3列のレイアウトについても同様のロジックがあります。

次に、私のレイアウトファイルで:

    <% 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 %>

これは、modrailsに変更するまでうまく機能しました。modrailsがアプリのこの部分を単純に機能させない理由を想像することはできません。

興味深いメモ:サイトのhttps部分にアクセスしましたが、レイアウトは問題なく読み込まれていました。サーバーサポート担当者は、キャッシュをクリアする必要があると言いましたが、問題は解決しません。

どんな助けでもいただければ幸いです!

4

1 に答える 1

1

これは古い投稿であることは知っていますが、他の人に見られるようにするためです。私があなたが何を望んでいるかを正しく理解していれば、問題はあなたの状態で使用されているロジックにあると思います。

controller:actionがusers:showまたはfriendships:indexまたはtags:indexのときに左側の列を表示する場合は、論理条件が正しくありません。それらを修正するには括弧が必要です。

たとえば、ユーザーが「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を返しますが、これはtrueであると想定されています。そうかもしれません。

于 2010-06-07T15:13:54.787 に答える