3

我正在使用 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#show:

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

让我感到困惑的是,这段代码在帖子控制器中工作:

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:inreplace' 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:inblock in paginate' will_paginate (3.0.pre2) lib/ will_paginate/collection.rb:87:in create' will_paginate (3.0.pre2) lib/will_paginate/finders/base.rb:62:inpaginate' app/controllers/tags_controller.rb:8:in show' actionpack (3.0.0) lib/action_controller/metal/implicit_render.rb:4:insend_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:inprocess_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:inrun_callbacks' actionpack (3.0.0) lib/abstract_controller/callbacks.rb:17:inprocess_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:在block in instrument' activesupport (3.0.0) lib/active_support/notifications/instrumenter.rb:21:in仪器'activesupport (3.0.0) lib/active_support/notifications.rb:52:in instrument' actionpack (3.0.0) lib/action_controller/metal/instrumentation.rb:29:inprocess_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:inprocess' actionpack (3.0.0) lib/ abstract_controller/rendering.rb:40:in process' actionpack (3.0.0) lib/action_controller/metal.rb:133:indispatch' actionpack (3.0.0) lib/action_controller/metal/rack_delegation.rb:14:in dispatch' actionpack (3.0.0) lib/action_controller/metal.rb:173:inblock in action' actionpack (3.0.0) lib/action_dispatch/routing/route_set.rb: 62:in call' actionpack (3.0.0) lib/action_dispatch/routing/route_set.rb:62:indispatch' actionpack (3.0.0) lib/action_dispatch/routing/route_set.rb:27:in call' rack-mount (0.6.12) lib/rack/mount/route_set.rb:148:inblock in call' 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:inoptimize_each '机架安装 (0.6.12) lib/rack/mount/code_generation.rb:92:in recognize' rack-mount (0.6.12) lib/rack/mount/route_set.rb:139:incall' 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:incall' actionpack (3.0.0) lib/action_dispatch/middleware/head.rb:14:in call' rack (1.2.1) lib/rack/methodoverride.rb:24:incall' actionpack (3.0.0) lib/action_dispatch/middleware/params_parser.rb:21:in call' actionpack (3.0.0) lib/action_dispatch/middleware/flash.rb:182:incall' actionpack (3.0.0) lib/action_dispatch/middleware/session/abstract_store.rb:149:in call' actionpack (3.0.0) lib/action_dispatch/middleware/cookies.rb:287:incall'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:incache' activerecord (3.0.0) lib/active_record/query_cache.rb: 12:in cache' activerecord (3.0.0) lib/active_record/query_cache.rb:31:incall' activerecord (3.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:355:in call' actionpack (3.0.0) lib/action_dispatch/middleware/callbacks.rb:46:inblock in call' activesupport (3.0.0) lib/active_support/callbacks.rb:415:in _run_call_callbacks' actionpack (3.0.0) lib/action_dispatch/middleware/callbacks.rb:44:incall' rack (1.2.1) lib/rack/sendfile.rb:107:in call' actionpack (3.0.0) lib/action_dispatch/middleware/remote_ip.rb:48:incall' actionpack (3.0.0) lib/action_dispatch/middleware/show_exceptions.rb:46:incall' railties (3.0.0) lib/rails/rack/logger.rb:13:incall' rack (1.2.1) lib/rack/runtime.rb:17:in call' activesupport (3.0.0) lib/active_support/cache/strategy/local_cache.rb:72:incall' rack (1.2.1) lib/rack/lock.rb:11:in block in call' <internal:prelude>:10:insynchronize' rack (1.2.1) lib/rack/ lock.rb:11:in call' actionpack (3.0.0) lib/action_dispatch/middleware/static.rb:30:incall' railties (3.0.0) lib/rails/application.rb:168:in call' railties (3.0.0) lib/rails/application.rb:77:inmethod_missing' railties (3.0.0) lib/rails/rack/log_tailer.rb:14:in call' rack (1.2.1) lib/rack/content_length.rb:13:incall' rack (1.2.1) lib/rack/handler/webrick.rb:52:in service' /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:111:inservice' /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:70:in run' /usr/local/lib/ruby/1.9.1/webrick/server.rb:183:inblock in start_thread'

4

1 回答 1

1

你有没有尝试过:

@posts = Post.tagged_with(@tag).paginate :page => params[:page], :order => "updated_at DESC"
于 2010-09-03T08:31:14.180 回答