这令我感到困惑。我有一个Rails应用程序,在Heroku的生产中,为许多记录返回404错误,如下所示:
https://myapplication.heroku.com/records/500
The page you were looking for doesn't exist.
虽然同一页面的JSON版本很好:
https://myapplication.heroku.com/records/500.json
有一些模型实例在常规HTML版本中运行良好:
https://myapplication.heroku.com/records/600
以下是config / routes.rb的相关部分:
resources :records do
member do
get 'revisions'
end
end
以下是记录控制器的#show操作:
# GET /records/1
# GET /records/1.json
def show
@r = Record.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @r }
end
end
昨天一切正常,但今天我在记录表上进行了一些数据库迁移,并对记录进行了很多其他更改。令我困惑的是JSON部分有效,而且记录确实存在。我甚至尝试将以下内容添加到routes.rb并将其移动到文件的顶部:
get 'records/:id', to: 'records#show', constraints: { :id => /\d/ }
但它没有做任何事。将.html
附加到网址栏中的GET请求也不会执行任何操作。
任何想法都将不胜感激!
修改:以下是a gist和Heroku日志。
答案 0 :(得分:1)
首先,我会refactor
你的控制器,如下:
#app/controllers/records_controller.rb
respond_to :html, :json
def show
@r = Record.find params[:id]
respond_with @r
end
您的代码对我来说很好....所以我建议我们深入研究(询问一些评论):
昨天一切正常,但今天我做了一些数据库 记录表上的迁移
答案 1 :(得分:0)
我正在使用PaperTrail for Versions和Record
名为User.find(@r.versions.last.whodunnit.to_i)
的视图,但@r.versions.last.whodunnit.to_i
为0且无法找到用户。
我被404错误抛出,因为我认为它在某种程度上没有找到数据库中的主Record
记录,而实际上是其他东西。
在enabling logging之后,这并不难调试。 (我以为我之前已经启用了日志记录,但显然没有。)
谢谢大家的帮助!