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

何が間違っているかについて何か考えはありますか?

4

2 に答える 2

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のパラメーターは実際には配列です。

于 2011-01-31T18:21:14.583 に答える
1

Post の has many アソシエーションですか?
多分あなたは試してみるべきです:

params[:topic][:posts_attributes][0][:member_id] = current_member.id
于 2011-01-31T03:30:48.747 に答える