很奇怪,直到今天,我在heroku的应用程序中一切正常。我必须改变一些事情。我有3个模型:帖子,评论和问题。转到问题索引的链接都没有工作(但是在localhost上运行的一切都运行良好)。已迁移heroku数据库,并且网址将移至正确的位置。这是我得到的heroku日志错误:
ActiveRecord::RecordNotFound (Couldn't find Question with id=4)
页面上写着:
The page you were looking for doesn't exist.
以下是链接的样子:
<%= link_to (comment.body), comment_questions_path(comment) %>
和这里的问题#index:
def index
@comment = Comment.find params[:comment_id]
@questions = @comment.questions
@question = Question.find params[:comment_id]
end
以下是路线:
resources :posts do
resources :comments do
end
end
resources :comments do
resources :questions do
end
end
我认为问题在于它正在寻找问题ID,即使它是问题索引页面。链接不在帖子页面或评论页面上工作。如果您需要我发布更多文件,请在评论中告诉我。
答案 0 :(得分:2)
questions#index
@question = Question.find params[:comment_id]
您正在尝试根据评论ID找到问题,这可能与您的意图不同。问题是,你可以使用其他任何ID。
如果您运行rake routes
,您可以看到config/routes.rb
文件生成的所有路由的列表。您应该看到这样的路线:
comment_questions GET comments/:comment_id/questions questions#index
这意味着当有人访问/comments/4/questions
之类的网址时(可以使用帮助comment_questions_path
生成),他们会调用index
QuestionsController
方法,{ {1}}等于4.您的代码正在尝试使用ID 4 和查询ID为4的问题 - 但数据库中没有ID 4的问题,因此应用程序崩溃。
无论如何params[:comment_id]
应该指的是什么?问题索引页面通常应该用于列出特定评论的所有问题,而不是任何特定评论。
PS您不需要在路线中包含内部@question
:
do ... end
可以
resources :comments do
resources :questions do
end
end
答案 1 :(得分:0)
您使用params[:comment_id]
作为question_id