<% for child in root.direct_children do %>
我认为direct_children
的{{1}}是NoMethodError,这是acts_as_nested_set
的实例方法。在控制台上,如果我尝试创建模型的新实例,它同样无法访问acts_as_nested_set
实例方法,因此我认为问题不在于局部但在模型中。
再次,抱歉,如果我的术语有误,我是铁杆新手。无论如何,我做错了什么?我的模型中有“acts_as_nested_set
”,就像上面的要点一样,但我的模型似乎不是一个嵌套的集合。我该如何解决这个问题?
谢谢!
这是我正在使用的模型的代码(todo.rb):
class Todo < ActiveRecord::Base
acts_as_nested_set
end
这是部分:
<% content_tag :li, :id => dom_id(root) do %>
<%= content_tag :span, root.text %>
<% content_tag :ul do %>
<% for child in root.direct_children do %>
<%= render :partial => "tree", :locals => {:root => child}%>
<%end %>
<%end unless root.direct_children.empty? %>
<%end%>
root
从视图传递给部分,如:
<%= render :partial => "tree", :locals => {:root => @root} %>
和@root
在控制器中定义如下:
@root = Todo.find_by_parent_id(nil)
同样,代码主要是通过上面的gist链接进行的很少修改来批量复制。
答案 0 :(得分:1)
一些事情:
./script/plugin install git://github.com/rails/acts_as_nested_set.git
parent_id
,lft
,rgt
。没有这些acts_as_nested_set
将很难弄清楚发生了什么。我建议你阅读this file顶部的文档,因为自述文件没有说深蹲,也不是那个问题。如果您已完成上述操作,是否创建了根元素(未将parent_id
设置为任何内容),然后至少添加了一个子元素?
m = Model.new
m.title = "My model's title"
m.save!
m2 = Model.new
m2.title = "My child"
m2.save!
m.add_child(m2)
我刚刚使用上述内容进行了快速测试,之后我可以执行m.root?
和m.direct_children
之类的操作。祝你好运。
答案 1 :(得分:0)
我从你的标题中得到的是你使用的行为比acts_as_nested_set多得多。尝试删除一些插件,然后重试。