0

私のルビーアプリには3つのクラスがあります。

   class EmployeeDetail < ActiveRecord::Base
         belongs_to :ContactDetails  
   end

   class ContactDetails < ActiveRecord::Base
      belongs_to :communicationAddress, :class_name=>'Address'
      belongs_to :permanentAddress, :class_name=>'Address'
   end

   class Address < ActiveRecord::Base
      attr_accessible :city, :country, :pin, :state, :street
   end

私の要件は、EmployeeDetailのビューを作成し、同じページからcommunicationAddressとpermanentAddressを保存することです。

EmployeeDetail の _form.html.erb の可能な構造と、アドレスを保存するためにコントローラーで行う必要がある変更を教えてください。

ありがとう

4

1 に答える 1

0

ネストされた属性関連付けの自動保存機能を試す必要があります。

しかしまず、関連 :ContactDetails の名前を修正すると、Ruby は大文字で始まるすべての単語を定数としてカウントするため、非常に奇妙なエラーが発生する可能性があります。

推奨される方法は、:contact_details と :communication_address スタイルを使用することですが、:contactDetails も機能するはずです。

また、モデルには単数形の名前を使用することをお勧めします。

次に、EmployeeDetailモデルに次のように記述します。

accepts_nested_attributes_for :contact_details

contact_details_attributesモデルがフィールドで contact_details 属性を受け入れることができるようになります

ContactDetails

accepts_nested_attributes_for :communication_address, :permanent_address

その後、次のようなフォームを作成するためにfields_forヘルパーを使用できます。

 <%= form_for :employee_detail do |employee_form| %>
    <%= employee_for.fields_for :contact_detail do |contact_fields| %>
       <%= contact_fields.fields.for :communication_address do |comm_address_fields| %>

いくつかの例が表示される場合があります: herehereおよびその他多数、google byrails nested form

于 2012-08-27T07:03:37.983 に答える