3

我正在使用 Rails 3.2.3 和acts_as_tree 1.1.0。我一直在用早期版本的 Rails 3(例如 3.1.1)将acts_as_tree 用于少数不同的项目,没有任何问题,但对于这个版本它根本不起作用。如果是因为 3.2.3 或我使用的其他东西,我无法确认。

这是我尝试过的,但无济于事:-在几个不同的控制器上使用acts_as_tree-仅使用acts_as_tree(没有顺序语句)-运行捆绑安装和捆绑更新-仔细检查parent_id是否存在并且是整数

首先,当我尝试这个时,我第一次尝试:

undefined method `acts_as_tree'

重新加载页面(而不做任何其他事情)导致:

undefined method `key?' for nil:NilClass

然后重新启动服务器导致启动失败(应用程序将崩溃并且无法启动)并出现以下错误:

/Library/Ruby/Gems/1.8/gems/bundler-1.1.3/lib/bundler/runtime.rb:68:in `require': /Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:78: odd number list for Hash (SyntaxError)
        foreign_key:   "parent_id",
                    ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:78: syntax error, unexpected ':', expecting '}'
        foreign_key:   "parent_id",
                    ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:78: syntax error, unexpected ',', expecting kEND
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:79: Can't assign to nil
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:80: syntax error, unexpected ':', expecting '='
        counter_cache: nil,
                      ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:80: Can't assign to nil
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:81: syntax error, unexpected ':', expecting '='
        dependent:     :destroy
                  ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:82: syntax error, unexpected '}', expecting kEND
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:86: syntax error, unexpected ':', expecting kEND
      belongs_to :parent, class_name:    name,
                                     ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:87: syntax error, unexpected ':', expecting '='
        foreign_key:   configuration[:foreign_key],
                    ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:88: syntax error, unexpected ':', expecting '='
        counter_cache: configuration[:counter_cache],
                      ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:89: syntax error, unexpected ':', expecting '='
        inverse_of:    :children
                   ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:91: syntax error, unexpected ':', expecting kEND
      has_many :children, class_name:  name,
                                     ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:92: syntax error, unexpected ':', expecting '='
        foreign_key: configuration[:foreign_key],
                    ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:93: syntax error, unexpected ':', expecting '='
        order:       configuration[:order],
              ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:94: syntax error, unexpected ':', expecting '='
        dependent:   configuration[:dependent],
                  ^
/Library/Ruby/Gems/1.8/gems/acts_as_tree-1.1.0/lib/acts_as_tree.rb:95: syntax error, unexpected ':', expecting '='
        inverse_of:  :parent
                   ^
    from /Library/Ruby/Gems/1.8/gems/bundler-1.1.3/lib/bundler/runtime.rb:68:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.1.3/lib/bundler/runtime.rb:66:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.1.3/lib/bundler/runtime.rb:66:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.1.3/lib/bundler/runtime.rb:55:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.1.3/lib/bundler/runtime.rb:55:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.1.3/lib/bundler.rb:119:in `require'
    from /Users/Christoffer/Documents/Webbprojekt/rails/Presenttips/config/application.rb:7
    from /Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/commands.rb:53:in `require'
    from /Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/commands.rb:53
    from /Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/commands.rb:50:in `tap'
    from /Library/Ruby/Gems/1.8/gems/railties-3.2.3/lib/rails/commands.rb:50
    from script/rails:6:in `require'
    from script/rails:6

这让我猜测 Rails 3.2.3 和acts_as_tree 存在兼容性问题。我不知道如何验证这一点。

我有什么选择?我不一定需要使用 Rails 3.2.3,但如果我降级到 3.1.1。(我试过了)我遇到了其他看起来更糟的问题(“文件设置”似乎不一样)。

那么,我有哪些选择?你是否也有过这样的经历?act_as_tree 有问题,对吧?

4

1 回答 1

3

好像有一个2年前的open

2 年前打开此问题不适用于 Rails 2.3.8 https://github.com/rails/acts_as_tree/issues/1

选项

act_as_tree_rails3gem install acts_as_tree_rails3

或者

嵌套集https://github.com/skyeagle/nested_set

编辑:

你是对的,新位置是https://github.com/amerine/acts_as_tree同一作者

有评论

如果 Rails/ActiveRecord 早于 3.0,我们将不再支持 Ruby 1.8 或版本。如果您使用的 ActiveRecord 版本早于 3.0, 请使用 0.1.1。

展望未来,我们将尽最大努力支持最新版本的 ActiveRecord 和 Ruby

这就是为什么他们不理会那些公开的问题

于 2012-05-30T06:01:58.040 回答