ruby-on-rails - 创建记录时出错 : nil object instead of array?

标签 ruby-on-rails model record nested-attributes

我有一个主题,其中有许多帖子,并接受它们的嵌套属性。当我创建主题时,它也会创建第一篇文章。

当调用 Topics#create 时,我在尝试评估 nil.[]= 时收到 NoMethodError,但我无法找出是什么原因造成的。

创建方法:

@forum = Forum.find params[:forum_id]
params[:topic][:post_attributes][:member_id] = current_member.id
@topic = @forum.topics.create params[:topic]
respond_with @topic, location: topic_url(@topic)

我的新主题形式:

- @topic.posts.build
= form_for @topic do |topic_form|
  = topic_form.label :title
  = topic_form.text_field :title
  = topic_form.fields_for :posts do |post_fields|
    = post_fields.label :content
    = post_fields.text_area :content

知道哪里出了问题吗?

最佳答案

我的猜测是在这一行:

params[:topic][:post_attributes][:member_id] = current_member.id

您可能应该将其更新为:

params[:topic][:post_attributes][0][:member_id] = current_member.id

params[:topic][:post_attributes].first[:member_id] = current_member.id

由于您使用的是 has_many 关联,因此可能会随该主题提交多个帖子,因此 post_attributes 的参数实际上是一个数组。

关于ruby-on-rails - 创建记录时出错 : nil object instead of array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4847016/

相关文章:

php - CakePHP 两次加入同一模型

swift - Swift-示例-如何在使用AVAudioRecorder录制之前和之后播放提示音?

MySQL : How to know which table that record belongs to in UNION result

ruby-on-rails - ActiveRecord belongs_to 关联中的 PostgreSQL jsonb 字段

ruby-on-rails - 按照建议添加急切负载后,Rails bullet gem 变慢

javascript - 如何从服务器保留空值? (Groovy 和 JavaScript)

haskell - 在不设置 -Wunused-top-binds 的情况下,推荐使用模块私有(private)记录类型的方法是什么?

ruby-on-rails - 定义我的 erb 模板和 HTML 样式布局使用的变量的正确位置?

javascript - Rails Fire Track Pixel 服务器端?

python - Django 模型字段默认来自模型方法