这是我的代码:
#class CategoriesController < ApplicationController
def show
@category = Category.find(params[:id])
end
#class Category < ActiveRecord::Base
has_one :task_list
#TaskList < ActiveRecord::Base
belongs_to :category
在TaskList模型中使用category_id
。
我把这个放在我看来:
<%= @category.task_list.id %>
我收到stack level too deep
错误。
我迷路了,我发誓我完成了相同的设置100次。
非常感谢任何帮助。感谢。
这是完整的痕迹(减去我修剪的顶部因为它一遍又一遍地重复:
See gist link below
好的,我已经从头开始并且改进了我不需要的东西,而且正如它所显示的那样:http://asciicasts.com/episodes/196-nested-model-form-part-1
class Category < ActiveRecord::Base
has_many :tasks, :dependent => :destroy
end
class Task < ActiveRecord::Base
belongs_to :category
end
#_form.html.erb
<%= form_for @category do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p>
<% f.fields_for :tasks do |builder| %>
<p>
<%= builder.text_field :name %>
</p>
<% end %>
</p>
<p><%= f.submit %></p>
<% end %>
#CategoryController
def new
@category = Category.new
3.times { @category.tasks.build }
end
我仍然得到同样的东西......这是完整的https://gist.github.com/1185772
这是Task&amp;的完整版本。类别模型:https://gist.github.com/1185839
答案 0 :(得分:8)
您检查了模型吗?
如果两者都设置为:destroy,那么你最终会得到一个无限循环并且堆栈级别太深错误。它们应该如下:
has_one :task_list, :dependent => :destroy
belongs_to :category, :dependent => :delete
还有更多信息。关于错误here。
答案 1 :(得分:1)
请参阅该问题遗留下来的评论。 Acts_as_tree遇到了我所做的范围问题。而且我最终也从头开始,现在工作正常。
答案 2 :(得分:0)
问题是task
是Rails中的保留字。以下是在干净的应用程序控制台中执行时task
输出的内容:
irb(main):001:0> task
=> <Rake::Task => []>
重命名模型,它会起作用。
答案 3 :(得分:0)
您的要点显示任务&lt; ActiveRecord什么时候应该是Task&lt; ActiveRecord的
您是否正确地生成了模型:
rails g model Task category_id:integer title:string