Ruby on rails 表单未能保存一个属性

Ruby on rails 表单未能保存一个属性,ruby-on-rails,forms,foreign-keys,Ruby On Rails,Forms,Foreign Keys,我有一个表单正在保存除一个属性以外的所有属性:用户id(外键)持续显示为nil。这是一个创建新评论的表单,它位于我的impressions#show文件中,因此这可能是问题的一部分;但是其他属性(:name和:impression_id)似乎保存得很好 以下是表格: = form_for @comment do |f| = f.label 'Add Comment' %br = f.text_area :body, placeholder: 'Comment', cols: 5

我有一个表单正在保存除一个属性以外的所有属性:用户id(外键)持续显示为nil。这是一个创建新评论的表单,它位于我的impressions#show文件中,因此这可能是问题的一部分;但是其他属性(:name和:impression_id)似乎保存得很好

以下是表格:

= form_for @comment do |f|
   = f.label 'Add Comment'
   %br
   = f.text_area :body, placeholder: 'Comment', cols: 50, rows: 3
   %br
   = f.hidden_field :impression_id, :value => @impression.id
   = f.hidden_field :user_id, :value => current_user.id
   %br
   = f.submit "Save"
U控制器的相关部分为:

 def show
   @impression = Impression.find(params[:id])
   @play = Play.find_by(id: @impression.production.play_id)
   @production = Production.find_by(id: @impression.production_id)
   @comments = Comment.where(impression_id: @impression.id)
   @comment = Comment.new
 end
在控制器的注释中,我有以下内容:

def new
  @impression = Impression.find(params[:impression_id])
  @comment = Comment.new(comment_params)
  authorize @comment
end

def create
  @comment = Comment.new(comment_params)
  authorize @comment
  if @comment.save
    flash[:notice] = 'You have successfully added a comment.'
    redirect_to :back
  else
    flash[:notice] = 'Please try again.'
    render :new
  end
end

private

def comment_params
  params.require(:comment).permit(:body, :impression_id, :user_id)
end
如您所见,我正在尝试为:user_id分配当前_user.id的值,但它不接受。有人能看到我遗漏了什么吗

我已尝试将注释参数添加到我的impressions controller,但收到一条错误消息,该参数注释为空


谢谢

首先检查当前用户如果当前用户的值正常,则必须将用户id保存在评论表中。

如果用户未登录,则当前用户为零。
确保您的用户已登录以回答您的问题

可能您的隐藏字段没有在注释子栏中发送
user\u id
。检查您的参数并查看。您的comment_params方法希望它位于comments子栏中

如何检查这些参数

在每次表单提交后查看rails控制台,或者 如果您使用的是rails 4.2,请在…中检查大约4分钟

或者

在你的档案里,把

group :development do
  gem 'better_errors'
  gem 'binding_of_caller'
end
捆绑(在终端中),重新启动rails服务器

然后在您的控制器代码中,在当前用户应该存在的行中,键入行
raise“oops”
,运行代码,获取错误,然后转到您的控制台


这将为您提供一个带有控制台的错误页面,您可以在其中键入任何变量名(参数、当前用户等)并检查其值。

这一切听起来都很棒!不幸的是,我在comments控制器中输入的行“raise”出现运行时错误,并且我没有看到错误页面或控制台。它们会在哪里?您应该有一个全新的漂亮的错误页面,但前提是您安装了更好的错误和绑定调用方,并且只有在您正在开发的情况下。然后您必须绑定并重新启动rails服务器。我会让这一切发生,然后给你一个截图。准备好。是的,我做了所有这些,但是这个新的错误页面在哪里?它应该替换我在预览中不断看到的当前错误页面吗?我修改了说明。看看新的URL,非常感谢!不幸的是,如果我在控制器中放入“raise”,我仍然会遇到运行时错误,所以目前这个解决方案似乎不适合我。无论如何,我已经确定我的当前用户已登录,并且确实有一个用户id;由于某种原因,它根本没有输入comment.user\u id。我搞不懂!我的用户已登录并具有id。我的当前用户具有值和id。它只是没有保存到:user\u id以获得新评论!