Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Heroku在创建图书记录时抛出回滚错误_Ruby On Rails - Fatal编程技术网

Ruby on rails Heroku在创建图书记录时抛出回滚错误

Ruby on rails Heroku在创建图书记录时抛出回滚错误,ruby-on-rails,Ruby On Rails,我目前正在构建一个应用程序,其中我有一个图书模型。 它在本地工作,没有任何问题。我将它部署到Heroku,运行rakedb:migrate,并尝试创建一本书 我发现了以下回滚错误 2018-03-29T07:29:59.748305+00:00 app[web.1]: D, [2018-03-29T07:29:59.748238 #4] DEBUG -- : [feda9269-2f19-4916-a87f-bc179fd52bec] User Load (1.7ms) SELECT "

我目前正在构建一个应用程序,其中我有一个图书模型。 它在本地工作,没有任何问题。我将它部署到Heroku,运行
rakedb:migrate
,并尝试创建一本书

我发现了以下回滚错误

2018-03-29T07:29:59.748305+00:00 app[web.1]: D, [2018-03-29T07:29:59.748238 #4] DEBUG -- : [feda9269-2f19-4916-a87f-bc179fd52bec]   User Load (1.7ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 3], ["LIMIT", 1]]
2018-03-29T07:29:59.750826+00:00 app[web.1]: D, [2018-03-29T07:29:59.750763 #4] DEBUG -- : [feda9269-2f19-4916-a87f-bc179fd52bec]    (0.8ms)  BEGIN
2018-03-29T07:29:59.763631+00:00 app[web.1]: D, [2018-03-29T07:29:59.763526 #4] DEBUG -- : [feda9269-2f19-4916-a87f-bc179fd52bec]    (0.9ms)  ROLLBACK
2018-03-29T07:29:59.764270+00:00 app[web.1]: I, [2018-03-29T07:29:59.764208 #4]  INFO -- : [feda9269-2f19-4916-a87f-bc179fd52bec]   Rendering books/new.html.erb within layouts/application
2018-03-29T07:29:59.770061+00:00 app[web.1]: I, [2018-03-29T07:29:59.769996 #4]  INFO -- : [feda9269-2f19-4916-a87f-bc179fd52bec]   Rendered books/_form.html.erb (5.5ms)
2018-03-29T07:29:59.770167+00:00 app[web.1]: I, [2018-03-29T07:29:59.770113 #4]  INFO -- : [feda9269-2f19-4916-a87f-bc179fd52bec]   Rendered books/new.html.erb within layouts/application (5.8ms)
2018-03-29T07:29:59.771544+00:00 app[web.1]: I, [2018-03-29T07:29:59.771486 #4]  INFO -- : [feda9269-2f19-4916-a87f-bc179fd52bec]   Rendered layouts/_navbar.html.erb (0.7ms)
2018-03-29T07:29:59.771904+00:00 app[web.1]: I, [2018-03-29T07:29:59.771828 #4]  INFO -- : [feda9269-2f19-4916-a87f-bc179fd52bec]   Rendered layouts/_alerts.html.erb (0.2ms)
2018-03-29T07:29:59.772181+00:00 app[web.1]: I, [2018-03-29T07:29:59.772125 #4]  INFO -- : [feda9269-2f19-4916-a87f-bc179fd52bec] Completed 200 OK in 28ms (Views: 8.2ms | ActiveRecord: 3.4ms)
图书管理员

class BooksController < ApplicationController
    before_action :find_book, only: [:show, :edit, :update, :destroy]
    before_action :book_owner, only: [:destroy, :edit, :update]
    def index
        @books = Book.all.order("created_at DESC")
    end

    def show
    end

    def new
        @book = current_user.books.build
        @categories = Category.all.map{ |c| [c.name, c.id] }
    end

    def create
        @book = current_user.books.build(book_params)
        @book.category_id = params[:category_id]
        if @book.save
            redirect_to books_path
        else
            render 'new'
        end
    end

    def edit
        @categories = Category.all.map{ |c| [c.name, c.id] }
    end

    def update
        @book.category_id = params[:category_id]
        if @book.update(book_params)
            redirect_to book_path(@book)
        else
            render 'edit'
        end
    end

    def destroy
        @book.destroy
        redirect_to root_path
    end


    private

    def book_params
        params.require(:book).permit(:title, :description, :author, :category_id)
    end

    def find_book
        @book = Book.find(params[:id])
    end

    def book_owner
        unless current_user.id == @book.user_id
            flash[:notice] = "You are not allowed to do that!"
            redirect_to @book
        end
    end

end
Category_id为零,因为我还没有在我的第二台笔记本电脑上设置它们,因为我无法获得Category.connection(Category.create(name:“SOMECATEGORY”)使用它创建类别,但如果没有Category.connection它将无法工作 在我的heroku应用程序中,我可以执行Category.connection和Category.create….-但即使在那之后,它也不起作用


我做错了什么?一如既往地提前感谢您的帮助

由于记录无效,您将收到错误。原因是您没有正确分配
类别\u id

您需要将
params[:category\u id]
更改为
book\u params[:category\u id]

params[:category_id]将为您提供
nil
,验证检查将失败

def create
  @book = current_user.books.build(book_params)
  @book.category_id = book_params[:category_id]
  if @book.save
    redirect_to books_path
  else
    render 'new'
  end
end
您还需要对
更新
操作进行相同的更改

更新:

Started POST "/books" for 127.0.0.1 at 2018-03-29 11:13:22 +0200
Processing by BooksController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"UYKPhHA99zg5TMMwgKGk+h2OPPaCQkpkjohPRnRNQHlJB1eQF4Ooro4Tvx9VDSr3U6/H4AGoThu8jzkrwyMbUB==", "book"=>{"category_id"=>"", "title"=>"tesas", "author"=>"asdasd", "description"=>"asdasd"}, "commit"=>"Create Book"}
  User Load (0.3ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
   (0.1ms)  BEGIN
   (0.3ms)  ROLLBACK
  Rendering books/new.html.erb within layouts/application
  Rendered books/_form.html.erb (10.0ms)
  Rendered books/new.html.erb within layouts/application (11.9ms)
  Rendered layouts/_navbar.html.erb (1.2ms)
  Rendered layouts/_alerts.html.erb (0.3ms)
Completed 200 OK in 52ms (Views: 46.3ms | ActiveRecord: 0.7ms)
我想我发现了我的错误:通过web创建时,我的用户\u id为零-我在控制台上创建了相同的记录,并传递了参数user\u id-voila,works。我的user_id参数在heroku rails服务器上不传递,但在本地机器上传递。未更改任何代码行


这怎么可能呢?

你能分享一些更多的信息,比如你的书模型和控制器部分吗?对不起,我不知道我在这里的帖子发生了什么,它应该已经包括在内了。我试过了,但没有用。我想知道没有你的建议,我的本地机器如何工作。。我只是试着在另一台笔记本电脑上运行我的应用程序,结果和在heroku上一样。回降。。。我甚至无法获取Book.connection/Category.connection,因为它显示未初始化的常量Book/Category。请根据您的参数发送邮件我建议的解决方案应该可以解决此问题。还要检查您是否也在heroku上获取了Category_id,或者您可以尝试在控制台上创建相同的记录
Started POST "/books" for 127.0.0.1 at 2018-03-29 11:13:22 +0200
Processing by BooksController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"UYKPhHA99zg5TMMwgKGk+h2OPPaCQkpkjohPRnRNQHlJB1eQF4Ooro4Tvx9VDSr3U6/H4AGoThu8jzkrwyMbUB==", "book"=>{"category_id"=>"", "title"=>"tesas", "author"=>"asdasd", "description"=>"asdasd"}, "commit"=>"Create Book"}
  User Load (0.3ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
   (0.1ms)  BEGIN
   (0.3ms)  ROLLBACK
  Rendering books/new.html.erb within layouts/application
  Rendered books/_form.html.erb (10.0ms)
  Rendered books/new.html.erb within layouts/application (11.9ms)
  Rendered layouts/_navbar.html.erb (1.2ms)
  Rendered layouts/_alerts.html.erb (0.3ms)
Completed 200 OK in 52ms (Views: 46.3ms | ActiveRecord: 0.7ms)
def create
  @book = current_user.books.build(book_params)
  @book.category_id = book_params[:category_id]
  if @book.save
    redirect_to books_path
  else
    render 'new'
  end
end