2011-01-29 6 views
3

Topicには、多くのPostがあります。トピックが作成されると、それと共に最初の投稿が作成されます。フォーム内に「多くの」関係があるレコードのフィールド

私は形でポストフィールドが含まれていました。私はcreateメソッドの最初の行にUnknownAttributeError - unknown attribute: postを取得

def new 
    @topic = Topic.new 
    @post = Post.new 
    respond_with @topic 
end 

def create 
    @topic = Topic.create params[:topic] 
    @post = @topic.create_post params[:topic][:post] 
    respond_with @topic, location: topic_url(@topic) 
end 

= form_for @topic do |topic_form| 

    # ... 

    = topic_form.fields_for @post do |post_fields| 
    = post_fields.label :content 
    %br/ 
    = post_fields.text_area :content 
    %br/ 

はここのように私TopicsControllerが見えるものです。投稿のハッシュがリクエストのトピックハッシュに含まれていたためと推測しています。

"topic" => { "title" => "...", "post" => { "content" => "..." } } 

どうすればこの問題を回避できますか?

答えて

4
  1. Topicモデルのモデル番号はaccepts_nested_attributes_for :postsである必要があります。
  2. フォームに@postの代わりに= topic_form.fields_for :posts do |post_fields|が必要です。
  3. newまたはcreateのいずれの方法も、@post = ....行を必要としません。 @topicを保存すると、関連する新しい投稿が自動的に保存されます。

ここ形でネストされた属性の偉大な説明です:http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes

+0

指示通りに私がしたが、私はまだ正確に同じエラーを取得しています。 –

関連する問題