rails3 の nested_form ジェムを使って何か良いことをしようとしています。(私はこの宝石を使用できませんでしたが、Rails3 は常にこのことを行うために宝石を必要とするようです...そして、Google は常に、レール 3 のネストされたフォームのために私をこの宝石にリダイレクトします)
だから私はこのアーキテクチャを持っています:
- Model1 has_many Model2 (, :dependent => :nullify)
- Model1 has_many Model3 (, :dependent => :nullify)
- Model2 は Model1 に属します
- Model2 は Model3 に属します
- accept_nested_attributes_for :model3、:limit => 1
- attr_accessible :model3_attributes
- モデル 3 has_many モデル 2
- Model3 は Model1 に属します
バックオフィスでのアイデアは、Model1 を作成し、次にネストされた Model2 を作成し、Model2 の作成フォームで、リストで選択するか、新しい Model3 を作成することです。
私は多くのことを足場にかけましたが、今はその方法についてのドキュメントを探していますが、rails3 はすべてを「推測」するため、助けが必要です。
現在:
- Model3 が作成されていれば、すべてが機能します。ここに私の Model2 フォームがあります: http://pastebin.com/6te9fSK8 (リストに表示され、選択します)
- 今、私は「新しいモデル3」機能が欲しいと思っていました。だから私はnested_formの宝石を追加しました
- このコードを追加しましたhttp://pastebin.com/nzqVzwzn
- まず、編集の場合、「機能」します。新しいモデル 3 を作成すると、リストに追加され、以前のモデルが置き換えられます。
- しかし、レビューの後、新しいものを追加したいたびに、追加した古いものを置き換えます。JavaScript の問題のようです (jQuery9 を使用しています)
- 新しいモデル 1 を作成してからネストされたモデル 2 を作成すると、モデル 3 リストは空になります。そのため、新しいフィールドで新しいモデル 3 を追加しても、フォームは (空の) リストからモデル 3 を選択することを想定しています。フォームからリストを削除しても、まだ待機中のモデル3を選択し、追加した新しいモデル3を気にしません。(新しいモデル1を作成するときにデフォルトのモデル3を作成することでそれをバイパスできますが、弱いパッチのように見えます...)
:model1_id から @model1 を見つけるために保護されたメソッドを追加した model2 を除いて、コントローラーには触れませんでした。
class Models2Controller < ApplicationController
before_filter :get_model1
...
protected
def get_model1
@model1 = Model1.find(params[:model1_id])
end
これを適切に管理する方法について誰かが私を助けることができれば、それは本当に役に立ちます。
ありがとうございました