嗨人
我已按照本教程:http://railscasts.com/episodes/262-trees-with-ancestry
当我尝试制作“arrange(:order =>:id)”时,我收到了此消息
undefined method `arrange' for #<Array:0x8c19780>
Extracted source (around line #4):
1:
2: <h1>Listing categories</h1>
3:
4: <%= nested_categories @categories.arrange(:order => :id) %>
5:
6: <br />
7:
请帮帮我吗?
谢谢!
答案 0 :(得分:4)
我正在使用祖先宝石,它对我来说很好。 e.g:
require 'awesome_print' # just for nice demo output
ap Account.arrange(:order => :id) ; 1
您需要在Categories类本身上运行它 - 它是一个类方法
在Rails控制台中尝试一下!
答案 1 :(得分:3)
我会澄清@ Tilo的回答:
在您的控制器中,执行:
def index
@categories = Category.arrange(:order => :created_at)
respond_to do |format|
format.html # index.html.erb
format.json { render json: @categories }
end
end
在您的视图中,执行:
<%= nested_categories @categories %>
我正在使用Rails 3,而“Ancestry”宝石似乎是“Acts As Tree”宝石的绝佳替代品。
答案 2 :(得分:1)
正如我在this post中描述的那样......
arrange()方法在类级别或命名范围内起作用,而不是在返回的值数组上起作用。例如,如果要在名为&#39; Activity&#39;的表上调用arrange(),这将起作用并以排列的格式返回整个表:
Activity.arrange
但是,如果你想在表格中的特定树上打电话安排,你会去:
Activity.find(...).subtree.arrange
&#39;子树&#39;是has_ancestry gem提供的命名范围。因此,arrange()方法应该适用于以下命名范围: