2

私は

Admin :: ChecklistsController#showのSystemStackError

スタックレベルが深すぎます

コントローラのアクション:

# GET /admin/checklists/1
# GET /admin/checklists/1.json
def show
  @admin_checklist = Admin::Checklist.find(params[:id])

  respond_to do |format|
    format.html #show.html.erb
    format.json { render json: @admin_checklist }
  end
end

そしてモデル

class Admin::Checklist < ActiveRecord::Base
  attr_accessible :description, :name, :usable, :categories_attributes
  has_many :categories, :dependent => :destroy
  validates_presence_of :name,:description

  accepts_nested_attributes_for :categories, :allow_destroy => true

end

class Admin::Category < ActiveRecord::Base
  attr_accessible :export_head, :export_position, :export_text, :frontend_head, :frontend_position, :frontend_text
  belongs_to :checklist
  validates_presence_of :frontend_head, :frontend_text

end

私はすでにattributes_accessibleで少し遊んでいました。:categories_attributesを:categoriesに置き換えると

次に、エンドレスループエラーを失いますが、予想どおり、カテゴリ属性を一括割り当てできなくなりました

誰もが私が両方のエラーを修正する方法を思いついた。

編集:

2012-12-1210:12:41+0100で192.168.4.191のGET"/admin / checklists / 4"を開始しました。Admin::ChecklistsController#showによるHTMLパラメータとしての処理:{"id" => "4"} Admin ::チェックリストの読み込み(0.2ms)SELECT"admin_checklists"。*FROM "admin_checkli
sts"WHERE"admin_checklists"。"id"=?LIMIT 1 [["id"、 "4"]] CACHE(0.0ms)SELECT"admin_checklists"。*FROM "admin_checklists" WHERE"admin_checklists
"。"id"=?LIMIT 1 [["id"、"4"]]240ミリ秒で500の内部サーバーエラーを完了しました

SystemStackError(スタックレベルが深すぎます):actionpack(3.2.9)lib / action_dispatch / Middleware / reloader.rb:70

レンダリングされた/var/lib/gems/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/middleware/templates/rescues/_trace.erb(1.5ms)レンダリングされた/var/lib/gems/1.9.1/ gems / actionpack-3.2.9 / lib / action_dispatch / middlew are / テンプレート/rescues/_request_and_response.erb(1.3ms)レンダリングされた/var/lib/gems/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/ミドルウェア/テンプレート/レスキュー/diagnostics.erbレスキュー/レイアウト内(10.7ms)

このSQL-Staementは、ページリクエストごとに約100回取得されます。これは、アクティブレコードのバグか、ネストされたモデルのアクティブレコードの誤用のようです.....

Edit2:

irb(main):001:0> Admin :: Checklist.find( '4')Admin :: Checklist Load(0.2ms)SELECT"admin_checklists"。*FROM "admin_checkli
sts"WHERE"admin_checklists"。"id"=?LIMIT 1 [["id"、 "4"]] =>#BrummliBrummliBrummliBrummliBrummliBrummliBr ... "、使用可能:false、created_at:" 20 12-12-11 13:43:23 "、updated_at:" 2012-12-11 13:43:23 ">

4

1 に答える 1

1

面白いことに、現在は機能しており、何も変更していないため、実際に何が修正されたのかよくわかりません。休憩から帰ってきました。コンソールで検索を行いました。テンプレートでもう一度確認したところ、ループを再度削除したため、不正なループに属する別のエラー メッセージが表示されました。削除した部分を再度貼り付けて修正しました。

<p id="notice"><%= notice %></p>

<p>
  <b>Name:</b>
  <%= @admin_checklist.name %>
</p>

<p>
  <b>Description:</b>
  <%= @admin_checklist.description %>
</p>

<p>
  <b>Usable:</b>
  <%= @admin_checklist.usable %>
</p>

<p>
    <ul>
        <% @admin_checklist.categories.each do |category|%>
            <li>
                <h3><%= category.frontend_head %></h3>
                <p><%= category.frontend_text %></p>
            </li>
        <% end %>
    </ul>
</p>


<%= link_to 'Edit', edit_admin_checklist_path(@admin_checklist) %> |
<%= link_to 'Back', admin_checklists_path %>

どうしてこうなったのか、答えられなくてすみません。

于 2012-12-12T12:52:40.650 に答える