首页 文章

TypeError:无法将Post转换为Array

提问于
浏览
2

我正在使用Rails 3和will_paginate . 分页在我的帖子控制器中运行正常但在我的标签控制器中我在第二个标签ID上出错 . 这是错误:

TypeError in TagsController#show

can't convert Post into Array

...

app/controllers/tags_controller.rb:8:in `show'

tags_controller.rb#显示:

def show
  @tag = ActsAsTaggableOn::Tag.find(params[:id])
  @posts = Post.paginate(Post.tagged_with(@tag), :page => params[:page], :order => "updated_at DESC") # line 8
  respond_with(@posts)
end

令我困惑的是这段代码在posts控制器中工作:

def index @posts = Post.paginate:page => params [:page],:order =>“updated_at DESC”end

我的帖子和标签模型包括:

cattr_reader :per_page
@@per_page = 10

谁能解释我在这里做错了什么?

编辑:(完整堆栈跟踪)

will_paginate(3.0.pre2)lib / will_paginate / collection.rb:134:in replace' will_paginate (3.0.pre2) lib/will_paginate/collection.rb:134:in replace'will_paginate(3.0.pre2)lib / will_paginate / finders / active_record.rb:91:in wp_query' will_paginate (3.0.pre2) lib/will_paginate/finders/base.rb:64:in block in paginate'will_paginate(3.0.pre2) lib / will_paginate / collection.rb:87:在 create' will_paginate (3.0.pre2) lib/will_paginate/finders/base.rb:62:in paginate'app / controllers / tags_controller.rb:8:in show' actionpack (3.0.0) lib/action_controller/metal/implicit_render.rb:4:in send_action'actionpack(3.0.0)lib / abstract_controller / base.rb:150:in process_action' actionpack (3.0.0) lib/action_controller/metal/rendering.rb:11:in process_action'actionpack( 3.0.0)lib / abstract_controller / callbacks.rb:18:in block in process_action' activesupport (3.0.0) lib/active_support/callbacks.rb:435:in _run__833165888__process_action__116844887__callbacks'activesupport(3.0.0)lib / active_support / callbacks.rb:409:in _run_process_action_callbacks' activesupport (3.0.0) lib/active_support/callbacks.rb:93:in run_callbacks'actionpack(3.0.0)lib / abstract_controller / callbacks . rb:17:在 process_action' actionpack (3.0.0) lib/action_controller/metal/instrumentation.rb:30:in 块中的process_action'activesupport(3.0.0)lib / active_support / notifications.rb:52:in block in instrument' activesupport (3.0.0) lib/active_support/notifications/instrumenter.rb:21:in instrument'activesupport(3.0.0)lib / active_support / notifications.rb:52:in instrument' actionpack (3.0.0) lib/action_controller/metal/instrumentation.rb:29:in process_action' actionpack(3.0.0)lib / action_controller / metal / rescue.rb:17:in process_action' actionpack (3.0.0) lib/abstract_controller/base.rb:119:in process'actio npack(3.0.0)lib / abstract_controller / rendering.rb:40:在 process' actionpack (3.0.0) lib/action_controller/metal.rb:133:in dispatch'actionpack(3.0.0)lib / action_controller / metal / rack_delegation.rb:14:in dispatch' actionpack (3.0.0) lib/action_controller/metal.rb:173:in block in action'actionpack(3.0.0) lib / action_dispatch / routing / route_set.rb:62:在 call' actionpack (3.0.0) lib/action_dispatch/routing/route_set.rb:62:in dispatch'actionpack(3.0.0)lib / action_dispatch / routing / route_set.rb:27:在 call' rack-mount (0.6.12) lib/rack/mount/route_set.rb:148:in 块中调用'rack-mount(0.6.12)lib / rack / mount / code_generation.rb:93:in block in recognize' rack-mount (0.6.12) lib/rack/mount/code_generation.rb:89:in optimized_each' rack-mount(0.6.12)lib / rack / mount / code_generation.rb:92:in recognize' rack-mount (0.6.12) lib/rack/mount/route_set.rb:139:in call'actionpack(3.0.0)lib / action_dispatch / routing / route_set.rb:492:在 call' actionpack (3.0.0) lib/action_dispatch/middleware/best_standards_support.rb:17:in 中调用'actionpack(3.0.0)lib / action_dispatch / middleware / head.rb:14:in call' rack (1.2.1) lib/rack/methodoverride.rb:24:in call'actionpack(3.0.0)lib / action_dispatch / middleware / params_parser.rb:21:21:在 call' actionpack (3.0.0) lib/action_dispatch/middleware/flash.rb:182:in 中调用'actionpack(3.0.0)lib / action_dispatch / middleware / session / abstract_store.rb:149:在 call' actionpack (3.0.0) lib/action_dispatch/middleware/cookies.rb:287:in 中调用'activerecord(3.0.0)lib / active_record / query_cache.rb:32:in block in call' activerecord (3.0.0) lib/active_record/connection_adapters/abstract/query_cache.rb:28:in cache'activerecord( 3.0.0)lib / active_record / query_c ache.rb:12:在 cache' activerecord (3.0.0) lib/active_record/query_cache.rb:31:in 中调用'activerecord(3.0.0)lib / active_record / connection_adapters / abstract / connection_pool.rb:355:在 call' actionpack (3.0.0) lib/action_dispatch/middleware/callbacks.rb:46:in 块中调用'activesupport(3.0.0)lib / active_support / callbacks.rb: 415:在 _run_call_callbacks' actionpack (3.0.0) lib/action_dispatch/middleware/callbacks.rb:44:in 中调用'rack(1.2.1)lib / rack / sendfile.rb:107:在 call' actionpack (3.0.0) lib/action_dispatch/middleware/remote_ip.rb:48:in 中调用'actionpack(3.0.0)lib / action_dispatch / middleware / show_exceptions.rb:46:in call' railties (3.0.0) lib/rails/rack/logger.rb:13:in call' rack( 1.2.1)lib / rack / runtime.rb:17:在 call' activesupport (3.0.0) lib/active_support/cache/strategy/local_cache.rb:72:in 中调用'rack(1.2.1)lib / rack / lock.rb:11:in block in call' <internal:prelude>:10:in synchronize'rack(1.2.1)lib / rack / lock . rb:11:在 call' actionpack (3.0.0) lib/action_dispatch/middleware/static.rb:30:in 中调用'railties(3.0.0)lib / rails / application.rb:168:在 call' railties (3.0.0) lib/rails/application.rb:77:in method_missing'railties(3.0.0)lib / rails / rack / log_tailer.rb:14:in call' rack (1.2.1) lib/rack/content_length.rb:13:in call' rack(1.2.1)lib / rack / handler / webrick.rb:52:in service' /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:111:in service'/usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:70:in run' /usr/local/lib/ruby/1.9.1/webrick/server.rb:183:in block in start_thread'

1 回答

  • 1

    你有没有尝试过:

    @posts = Post.tagged_with(@tag).paginate :page => params[:page], :order => "updated_at DESC"
    

相关问题