作成した属性を持つ 3 つのテーブルは次のとおりです。
テーブル名: um_org_data
、属性:id, org_name, org_description, webdomain
テーブル名: addresses
、属性:id, offc_addr, um_org_datum_id
テーブル名: phone_nos
、属性:offc_ph, offc_ext, address_id
ここで、名前を持つ組織に複数の住所Organization 1:M addresses
があり、住所に複数の電話番号があることを望んでいますaddress 1:M telephone_no
私のコントローラーからのコードは次のとおりです。
um_org_datum.rb
class UmOrgDatum < ActiveRecord::Base
attr_accessible :org_description, :org_name, :webdomain, :addresses, :addresses_attributes
has_many :addresses
accepts_nested_attributes_for :addresses
end
アドレス.rb
class Address < ActiveRecord::Base
attr_accessible :offc_addr
belongs_to :um_org_datum
has_many :phone_nos
accepts_nested_attributes_for :phone_nos
end
phone_no.rb
class PhoneNo < ActiveRecord::Base
attr_accessible :offc_ph, :offc_ext
belongs_to :address
end
組織と住所との関連付けは正常に機能しているため...ただし、複数の電話番号を作成するのに問題があります。
私のビューのコードは次のとおりです。
<%= simple_nested_form_for(@um_org_datum) do |f| %>
<%= f.error_notification %>
<div class="container">
<div class="row">
<div class="span3 pull-right">
<div class="well">
<h2>Heading</h2>
<p>Sample text</p>
</div>
</div>
<div class="span9">
<%= simple_nested_form_for(@um_org_datum, :validate => true, :html => { :class => 'form-horizontal' }) do |f| %>
<div class="control-group">
<label class="control-label">Organization Name </label>
<div class="controls">
<div class="input-prepend">
<%= f.text_field :org_name, required: true, :autofocus => true %>
</div>
</div>
</div>
<div class="control-group">
<label class="control-label">Orgazination Description </label>
<div class="controls">
<%= f.text_area :org_description, :cols => "100", :rows => "10" %>
</div>
</div>
<div class="control-group">
<label class="control-label">Web Domain </label>
<div class="controls">
<div class="input-prepend">
<%= f.text_field :webdomain, required: true, :autofocus => true %>
</div>
</div>
</div>
<div class="control-group">
<label class="control-label">Office Address</label>
<div class="controls">
<%= f.link_to_add "<i class='icon-plus'></i>".html_safe, :addresses%>
<%= f.fields_for :addresses do |task_form| %>
<div class="input-prepend">
<%= task_form.text_field :offc_addr, :label => false, :placeholder => 'Office Address'%>
<div class="control-group">
<label class="control-label">Telephone</label>
<div class="controls">
<%= f.link_to_add "<i class='icon-plus'></i>".html_safe, :phone_nos%>
<%= f.fields_for :phone_nos do |task_form| %>
<div class="input-prepend">
<%= task_form.text_field :offc_ph, :label => false, :placeholder => 'Office Address'%>
</div>
<div class="input-prepend">
<%= task_form.text_field :offc_ext, :label => false, :placeholder => 'Office Extension'%>
</div>
<div class="input-prepend">
<%= task_form.link_to_remove "<i class='icon-remove'></i>".html_safe%>
<% end %>
</div>
</div>
<div class="input-prepend">
<%= task_form.link_to_remove "<i class='icon-remove'></i>".html_safe%>
<% end %>
</div>
</div>
<div class="control-group">
<label class="control-label">Office Phone Number </label>
<div class="controls">
<div class="input-prepend">
<%= f.text_field :offc_ph, required: true, :autofocus => true %>
</div>
</div>
</div>
<div class="control-group">
<div class="controls">
<% if @um_org_datum.id == nil%>
<button class="btn btn-primary" type="submit">Submit</button>
<% else %>
<button class="btn btn-primary" type="submit">Update</button>
<% end %>
<a class="btn" href="/um_org_data" style="text-color:black">Cancel</a>
</div>
</div>
<% end %>
</div>
</div>
</div>
<% end %>
今私がやりたいことは、相互に循環依存している3つのテーブルがあることです....organization
テーブルで外部キーとして使用される主キーと、テーブルで外部キーとしてaddresses
使用される独自の主キーを持つphone_nos
テーブル。
アドレスの下の + ボタンをクリックすると、ユーザーが単一のアドレスに対して複数の電話を追加できる + ボタンで電話ラベルを表示するフォームが必要です。