我有一个主题
,其中有许多帖子
,并接受它们的嵌套属性。当我创建主题时,它也会创建第一篇文章。
当调用 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/