저는 레일을 처음 사용하고 중첩 된 폼으로 어려움을 겪고 있습니다.레일 - 중첩 된 폼이 보이지 않습니다 - 다른 컨트롤러가없는 테이블을 채우십시오
나는 비즈니스를 사이트에 올리고 비즈니스 세부 정보를 단일 양식으로 등록하기 만하면됩니다. 데이터베이스 수준에서 필자는 주소 정보를 '비즈니스'테이블에서 분리하여 '사용자'가 시스템에 주소록을 가지고 있기 때문에 자체 '주소'테이블에 저장합니다.
양식보기는 다음과 같습니다
<div class= "panel-body">
<%= form_for(@business) do |f| %>
<div class= "form-group">
<%= f.label :Business_name %>
<%= f.text_field :name, :autofocus => true, class: "form-control" %>
</div>
<div class= "form-group">
<%= f.label :Business_Email %>
<%= f.email_field :email, class: "form-control" %>
</div>
<div class= "form-group">
<%= f.fields_for :addresses do |x| %>
<%= x.label :Street_Number %>
<%= x.text_field :number %>
<% end %>
</div>
<div class= "form-group">
<%= f.submit "Register", class: "btn btn-primary" %>
</div>
<% end %>
</div>
을 나는 그것이 그러나 주소를 자신의 컨트롤러를 제공하기 위해 잔인한 것 같아 아무것도 렌더링 귀찮게 주소를 인스턴스화하는 것을 아무것도과 관련이있다 느낌이있다.
비즈니스 컨트롤러는 새 비즈니스를 등록하기위한 URL 인 'new'에 대해 이렇게 보입니다. 당신이 1 개 이상 주소를 갖고 싶어
이class Address < ActiveRecord::Base
belongs_to :business
end
class Business < ActiveRecord::Base
has_many :addresses
accepts_nested_attributes_for :addresses
감사합니다! 그것은 단순한 것이 될 것이라는 것을 알았다. – Rj01
아마 하나 이상의 비슷한 문제를 해결할 수 있습니다. "undefined method'build for 'nil : NilClass"오류가 발생했습니다. 폼에서 다른 중첩 된 폼에 대해이 작업을 수행 할 때 오류가 발생합니다. 위에서 제안한대로하고 있습니다. 이번에는 '주소'대신 '템플릿'을 사용합니다. 유일한 차이점은 비즈니스는 여러 관계 대신 하나의 템플리트 (템플리트 -> belongs_to business, business -> has_one 템플리트)를가집니다. 이 구문에서 다른 뭔가가 필요합니까? – Rj01
매우 유사하게 작동하지만'has_one' 연관이므로'template.build'가 아닌'build_template'을 사용해야합니다. – BroiSatse