当我从不同的控制器渲染部分时,堆栈级别太深错误

时间:2013-03-26 15:02:09

标签: ruby-on-rails

我有一个页面,taxons#show,列出了很多产品。单击某个产品时,默认情况下会将用户定向到产品#show,其中将显示部分_cart_local.html.erb。但是,我已经改变了用户体验,以便当你点击一个产品时,#在一个窗口中弹出一个灯箱,所以在taxons控制器和show视图中。但是当我也尝试在灯箱内渲染 cart _local partial时,我得到的堆栈级别太深了。

这是有问题的文件。我知道它也可能发生在其他地方。通常会导致此类错误的原因是什么?

<%= form_for :order, :url => populate_orders_path do |f| %>

<% if product.has_variants? %>
  <div id="product-variants" class="columns five alpha">
    <h6 class="product-section-title"><%= t(:variants) %></h6>
    <ul>
      <% has_checked = false
      product.variants.active(current_currency).each_with_index do |v,index|
        next if v.option_values.empty? || (!v.in_stock && !Spree::Config[:show_zero_stock_products])
        checked = !has_checked && (v.in_stock || Spree::Config[:allow_backorders])
        has_checked = true if checked %>
        <li>
          <%= radio_button_tag "products[#{product.id}]", v.id, checked, :disabled => !v.in_stock && !Spree::Config[:allow_backorders], 'data-price' => v.price_in(current_currency).display_price %>
          <label for="<%= ['products', product.id, v.id].join('_') %>">
            <span class="variant-description">
              <%= variant_options v %>
            </span>
            <% if variant_price v %>
              <span class="price diff"><%= variant_price v %></span>
            <% end %>
          </label>
        </li>
      <% end%>
    </ul>
  </div>
<% end%>

<% if product.price_in(current_currency) and !product.price.nil? %>
  <div data-hook="product_price" class="columns five <% if !product.has_variants? %> alpha <% else %> omega <% end %>">

    <div id="product-price">
      <h6 class="product-section-title"><%= t(:price) %></h6>
      <div><span class="price selling" itemprop="price"><%= product.price_in(current_currency).display_price %></span></div>
    </div>

    <div class="add-to-cart">
      <% if product.on_sale? %>      
        <%= number_field_tag (product.has_variants? ? :quantity : "variants[#{product.master.id}]"),
          1, :class => 'title', :in => 1..product.on_hand, :min => 1 %>
        <%= button_tag :class => 'large primary', :id => 'add-to-cart-button', :type => :submit do %>
          <%= t(:add_to_cart) %>
        <% end %>
      <% else %>
        <%= content_tag('strong', t(:out_of_stock)) %>
      <% end %>
    </div>
  </div>
<% else %>
    <div id="product-price">
      <br>
      <div><span class="price selling" itemprop="price"><%= t('product_not_available_in_this_currency') %></span></div>
    </div>
<% end %>    

</div>
<% end %>

1 个答案:

答案 0 :(得分:3)

此错误通常是递归变坏。

部分调用本身,或部分调用中使用的其中一个函数调用本身(具有错误/无中断条件)。