2011-01-31 100 views
2

我有一个Topic,它有很多Posts,并接受它们的嵌套属性。当我创建主题时,它也会创建第一篇文章。创建记录时出错:无对象而不是数组?

Topics#create被调用时,我得到一个NoMethodError当试图评估nil.[]=,我只是无法弄清楚是什么导致它。

的创建方法:

@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 

什么是错的任何想法?

+0

指向 的错误是什么? – Zabba 2011-01-31 02:40:32

+0

@Zabba:在复制之前,我已经删除了一行代码用于测试。更新了问题以包含它。第二行发生错误。 – 2011-01-31 03:08:12

回答

2

我的猜测是,它是在这条线:

 
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的参数实际上是一个数组。

1

这是一个有许多Post的协会吗?
也许你应该尝试:

params[:topic][:posts_attributes][0][:member_id] = current_member.id 
相关问题