0

2つのスキャフォールドモデルのネストフォームを作成するにはどうすればよいですか?Rails:2つのスカフォールドモデルのネストされたフォーム?

シラバスモデルがありますが、これには多くのミッションがあります。以前は、ミッションを作成する唯一の方法はシラバスのネストされたフォーム(Railscastsで作ったもの)でした。昨日、私はユーザーがミッションを自分で作成できるようにすることを決めたので、マイグレーションをスキップしながらミッションを足場に乗せて、既存のミッションモデルのコントローラーとビューを作成しました。

だから、ここで問題です:私は今、自身でミッションを作成することができますが、私はシラバスネストされたフォームを使用してミッションを作成しようとすると、それは私に#< \ミッションのためのエラー」未定義のメソッド `難しさ」を提供します: 0xb372ffc。> "シラバスの属性をミッションの属性に渡そうとしていますが、これはミッションのスキーマでは定義されていません。 (難易度はシラバスのみの属性です)。

要約:ミッションのモデルがあったときにネストされたフォームが「ビルダー」で動作しましたが、ミッションを単独で存在するようにスキャフォールドしたとき、ネストされたフォームを使用できませんでした。

これに影響する可能性があるファイルが2つ以上あるため、私は要点を作成しました。 https://gist.github.com/2631734

ところで、これらは私の最高の推測では、

current_user.creations.build(params[:syllabus]) 
でその creations

ある

{"utf8"=>"✓", 
"authenticity_token"=>"YxkzNmIJl0jBA467tdHP2zqNv22DgKrzSx+WCFgwKtk=", 
"syllabus"=> 
    {"category"=>"Technology and Internet", 
    "difficulty"=>"Beginner", 
    "title"=>"missions testing", 
    "description"=>"deccrip", 
    "missions_attributes"=> 
     {"0"=> 
      {"_destroy"=>"false", 
      "title"=>"plz", 
      "content"=>"<p>\r\n\tdad</p>\r\n" 
      } 
     } 
    }, 
    "commit"=>"Create Syllabus" 
} 
+0

は、あなたが現在持っているパラメータですか?あなたが持っていたいと思うものか? –

+0

@BenjaminUdinktenCate - これはエラーページに表示されているパラメータです。そして私は彼らが私のデータベースで渡したいと思っているものだと思っていますが、処理されていません – kibaekr

答えて

0

私はそれを理解しましたが、それは本当に面倒です...私はそれを行うより良い方法があると確信していますが、数日間このことに苦労した後、私はこの解決策よりも幸せです:

@syllabus = Syllabus.new(:title => params[:syllabus][:title], :category => params[:syllabus][:category], :difficulty => params[:syllabus][:difficulty], :description => params[:syllabus][:description], :author_id => current_user) 

    @syllabus.save! 

    params[:syllabus][:missions_attributes].each do |a, b| 

    @mission = Mission.new(:title => b[:title], :content => b[:content], :syllabus_id => @syllabus.id, :author_id => current_user, :category => @syllabus.category) 

    @mission.save! 

    end 
0

に渡す必要がありますのparamsシラバスの代わりにミッションのコレクションを指します。完全なエラーとユーザモデルなしでは、その種類を判別するのは難しいです。

関連する問題