だから私はここでトリッキーな問題を抱えています。解決方法がわかりません。
- has_many :educational_affiliations というプロバイダー モデルがあります。
- 教育機関の所属の所属先:機関 & 所属先:プロバイダ
私のデータベースには約 9000 の大学があるので、便利なrails3-jquery-autocomplete gem を使用して先行入力をサポートしています。それはすべてうまくいっています - その上で、プロバイダーの編集フォーム内の :educational_affiliations フォームのネストをサポートするために繭を使用しています。
ここで問題が発生します — これは、新しい所属レコードを送信するのに最適です (私は jquery を使用して :educational_affiliations_attributes オブジェクトに :institution_id を設定していますが、うまく機能します)
しかし、後でこれを編集するために戻ったとき、もちろん、:institution_name は入力されていません。これは、:educational_affiliations モデルの一部ではなく、:institution モデルに含まれているためです。
:educational_affiliations で試したのは次のとおりです。これが正しい解決策であると思います。
class EducationalAffiliation < ActiveRecord::Base
attr_accessible :degree, :graduation_year, :honors, :institution_name, :institution_id, :provider_id
belongs_to :institution
belongs_to :provider
# attr_accessor :institution_name
validates :institution_id, :graduation_year, :provider_id, :degree, presence: true
def institution_name
Institution.find(institution_id).name
end
end
(attr_accessor を使用して保存するために機能していましたが、今はコメントアウトしています)
したがって、上記の編集ビューをレンダリングすると、ActiveRecord::RecordNotFound: Couldn't find Institution without an IDエラーが発生します — <strong>しかし、そのステートメントでデバッガーを開くと、モデルは機関 ID を認識しているようです...なぜそれが拾わないのかとても混乱しています。
私はこれを可能な限り最悪の方法でやっていますか?私は愚かな解決策があると思います.. :)
名前を入力する必要があるパーシャルは次のとおりです。
.nested-fields
= f.input :institution_name, url: autocomplete_institution_name_data_path, as: :autocomplete, :input_html => {:id_element => '#provider_educational_affiliations_institution_id'}
= f.input :institution_id, as: :hidden
= f.input :provider_id, as: :hidden, input_html: { value: current_provider.id }
= link_to_remove_association "Remove Degree", f