gpt4 book ai didi

ruby-on-rails - 范围导致 Postgres 出错

转载 作者:行者123 更新时间:2023-11-29 13:33:31 24 4
gpt4 key购买 nike

以下应用程序与 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

图书 Controller

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

背景资料

  • ruby 1.9.3
  • rails 3.2.13
  • decent_exposure 2.2.0
  • will_paginate 3.0.3
  • 第 0.16.0 页
  • postgresql 9.x(使用 postgresapp)

尝试了以下

  • What is causing PGError: ERROR: there is no parameter $1 in my Rails app - 我需要 will_paginate 并且无法删除页面
  • 如果我从 expose(books) 中删除了 Book.scoped.paginate,它可以工作,但我不知道如何在没有范围的情况下分页。
  • 我在 database.yml 中尝试了 prepared_statement: false 并得出结论,它与此错误无关。

问题的根源是什么?我怎样才能让它发挥作用?

最佳答案

有了 Kaminari,错误不再存在,我得到了我想要的功能。

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

关于ruby-on-rails - 范围导致 Postgres 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18510495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com