gpt4 book ai didi

ruby-on-rails - 未找到 Rails 4.0 记录

转载 作者:行者123 更新时间:2023-12-03 16:06:17 24 4
gpt4 key购买 nike

在我的编辑操作中,如果记录不存在,我永远不会找到未找到的记录。我做错了什么。

这是我的编辑操作

    class OffersController < ApplicationController

rescue_from ActiveRecord::RecordNotFound, with: :record_not_found

def show
@offer = Offer.find(params[:id])
end

def edit
@offer = Offer.find_by(edit_hash: params[:edit_hash])
@country = Country.find_by(name: @offer.country)
@states = State.find(:all, :conditions => { country_id: @country })
end

private

def record_not_found
render text: "404 Not Found", status: 404
end
end

对于我不存在的编辑记录,我总是得到 nil:NilClass 的未定义方法“国家”。

此外,我提出了在我的显示操作中找不到的记录,但我想使用我的公用文件夹中的 404.html 页面。这个文件怎么用???

提前致谢

最佳答案

问题是您的行 @offer = Offer.find_by(edit_hash: params[:edit_hash])没有响应 ActiveRecord::RecordNotFound .它的响应是 nil .

您可以通过使用 rails c 从应用程序目录打开 Rails 控制台来查看。 .在控制台中,将其放入:
@offer = Offer.find_by(edit_hash: params[:edit_hash])
你会看到它的输出是 => nil .然后您可以输入 @offer你会再次看到它的输出是=> nil .现在,将此行放入控制台:
@offer = Offer.find(99999)
你会看到它的输出是 ActiveRecord::RecordNotFound: Couldn't find Offer with id=99999 .

要解决此问题,请添加 !给您的find_by调用,所以它们是这样的:
@offer = Offer.find_by!(edit_hash: params[:edit_hash])
这将导致 Rails 响应 ActiveRecord::RecordNotFound: ActiveRecord::RecordNotFound而不是 nil .

关于ruby-on-rails - 未找到 Rails 4.0 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17623736/

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