链接适用于localhost但不适用于heroku

时间:2013-10-29 00:30:10

标签: ruby-on-rails heroku ruby-on-rails-4

很奇怪,直到今天,我在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,即使它是问题索引页面。链接不在帖子页面或评论页面上工作。如果您需要我发布更多文件,请在评论中告诉我。

2 个答案:

答案 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