2011-01-31 104 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 
相關問題