Ruby on rails 不能';找不到没有ID的评论

Ruby on rails 不能';找不到没有ID的评论,ruby-on-rails,Ruby On Rails,我有两个模型:评论和问题(问题属于评论)。当试图创建一个新问题时,我在突出显示控制器的第一行时遇到了这个错误。直到最近,它还工作得很好,所以我不知道是什么导致了错误 Couldn't find Comment without an ID 控制器如下所示: def create @comment = Comment.find(params[:comment_id]) @question = @comment.questions.new(question_params) end 路线如下所示:

我有两个模型:评论和问题(问题属于评论)。当试图创建一个新问题时,我在突出显示控制器的第一行时遇到了这个错误。直到最近,它还工作得很好,所以我不知道是什么导致了错误

Couldn't find Comment without an ID
控制器如下所示:

def create
@comment = Comment.find(params[:comment_id])
@question = @comment.questions.new(question_params)
end
路线如下所示:

resources :comments do
  resources :questions 
end
发布后,即使它指定了不同的路径,也会重定向到“/questions”

问题形式如下:

<%= simple_form_for [@comment, Question.new] do |f| %>
<%= f.input :body, as: :text %>
<%= f.submit "Ask", :id => "button", class: "button5" %>
<% end %>
参数:

params.require(:question).permit(:body, :title, :comment_id, :user_id, :image, :image_remote_url, :caption)

看起来params[:comment_id]为零

为参数添加一个空白检查,或者您可以对注释执行
find by_id
,这样它将返回nil,对于创建问题,您只能在获得注释时执行该操作

@comment = Comment.find_by_id(params[:comment_id])
@question = @comment.question.new(question_params) if @comment.present?

您应该尝试这一行来查找您的评论:

@comment = Comment.find(params[:id])
我相信您的问题在于您的路由将id作为:id参数提供给注释

尝试运行:

rake routes

并查看路线以验证它返回给您的是哪种参数。您应该看到:id.

您试图在create方法中找到什么?父母?不知道你的意思。对rails来说相当陌生,@comment行是必要的吗?我认为它不会重定向。你似乎发错了帖子。请张贴您的查看代码(表格)。我想这就是错误发生的地方。对不起,我指的是您在控制台中看到的参数?您在哪个控制器中添加了该代码?您知道为什么吗。这很奇怪,因为它以前工作过。嗯,没有同样的错误。Rake routes也给了我评论id。出于某种原因,如果有任何线索,它会重定向到“/问题”。啊,没错。这个问题我读得不太好。如果您列出uri和rake路由的输出,您可能会得到更多帮助。这为“if@question.save”提供了一个未定义的方法save。
rake routes