繁体   English   中英

范围导致Postgres中的错误

[英]scope causes error in Postgres

以下应用程序可以与sqlite一起正常工作

书本模型

class Book < ActiveRecord::Base
    attr_accessible :month, :pages, :title, :year, :author_attributes, :publisher_attributes

    belongs_to :author
    belongs_to :publisher

    accepts_nested_attributes_for :author
    accepts_nested_attributes_for :publisher
end

书本控制器

class BooksController < ApplicationController
     respond_to(:html)

     expose(:books, :ancestor => [:author, :publisher]) { Book.scoped.paginate(:page => params[:page], :per_page=>params[:per_page])}
     expose(:book)
     # other functions here
end

与PostgreSQL,当我尝试访问http://localhost:3000/books/1时,它给出以下错误

ActiveRecord::StatementInvalid in Books#show

Showing /Users/tunwinnaing/Projects/rails_projects/books/app/views/books/show.html.haml where line #1 raised:

PG::UndefinedParameter: ERROR:  there is no parameter $1    
LINE 1: SELECT COUNT(*) FROM "books"  WHERE "books"."id" = $1    
                                                           ^
: SELECT COUNT(*) FROM "books"  WHERE "books"."id" = $1
Extracted source (around line #1):

1: - provide( :title, "#{book.title} | " )    
2: %h1= book.title    
3: %hr    
4: .row

背景资料

  • 红宝石1.9.3
  • 导轨3.2.13
  • decent_exposure 2.2.0
  • will_paginate 3.0.3
  • 第0.16.0页
  • PostgreSQL 9.x(使用postgresapp)

尝试了以下

  • 导致PGError的原因:错误:Rails应用程序中没有参数$ 1-我需要will_paginate并且无法删除页面
  • 如果我从Book.scoped.paginate expose(books)删除Book.scoped.paginate ,它可以工作,但是我不知道如何在没有范围的情况下进行分页。
  • 我在database.yml尝试了prepared_statement: false ,并得出结论与此错误无关。

问题出在哪里? 我该如何运作呢?

使用Kaminari ,错误不再存在,并且我已获得所需的功能。

深入研究pgwill_paginate的内部工作可能会发现问题的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM