여기 레일 초급, 내 프로젝트를 위해 이름, 중간 이름, 성 및 여권과 같은 항목을 사용하여 클라이언트를 만들어야합니다. 여권을 보관할 여권이라는 또 다른 테이블이 있습니다. 고객과 연계하여 여권 번호를 추가하고 싶습니다. 관련 코드는 다음과 같습니다.
클라이언트 용 컨트롤러
def new
@client = Client.new
end
def create
@client = Client.new(client_params)
if @client.save
redirect_to root_url
else
render 'new'
end
end
private
def client_params
params.require(:client).permit(:firstname, :middlename, :lastname, :PresentAddress)
end
end
여권용 컨트롤러
def new
@passport = Passport.new
end
def create
passport = Passport.new(passport_params)
if @passport.save
flash[:notice] = "Passport saved"
else
flash[:notice] = "Passport not saved"
end
end
private
def passport_params
params.require(:passport).permit(:idnumber, :country)
end
end
클라이언트 용 모델
has_one :passport, foreign_key: "client_id"
여권용 모델
belongs_to :client
클라이언트 용 마이그레이션 파일
create_table :clients do |t|
t.string :firstname
t.string :middlename
t.string :lastname
end
여권용 마이그레이션 파일
create_table :passport do |t|
t.string :passport
end
/clients/_form.html.erb
<%= form_for(@client) do |f| %>
<%= f.label :"First Name"%>
<%= f.text_field :firstname%>
<%= f.label :"Middle Name"%>
<%= f.text_field :middlename%>
<%= f.label :"Last Name"%>
<%= f.text_field :lastname%>
<%= f.submit "Create Client" %>
<% end %>
/passport/_form.html.erb
<%= form_for([@client, @client.passport.build]) do |f| %>
<%= f.label :"Passport ID Number" %>
<%= f.text_field :idnumber %>
<% f.submit "Create Passport" %>
<% end %>
/clients/new.html.erb
<%= render "clients/form" %>
<%= render "passports/new" %>
이 양식으로 클라이언트에 대한 패스포트를 생성하여 Postgres 데이터베이스로 보내고 싶습니다. 어떻게할까요? 다른 정보가 누락 된 경우 알려주세요.
편집 -지금은 더 간단한 필드로 변경되었습니다. 또한 ChiefrockaChris가 제안한 것을 수정했습니다.
이를 수행하는 방법은 주소에 대한 # _form.html.erb 뷰를 주소 뷰 폴더에 넣은 다음 client # create, client # update 등 뷰에서 부분적으로 렌더링하는 것입니다. 예를 들면 다음과 같습니다.
#clients/_form.html.erb
<%= form_for(@client) do |f| %>
<%= f.label :"First Name"%>
<%= f.text_field :FirstName%>
<%= f.label :"Middle Name"%>
<%= f.text_field :MiddleName%>
<%= f.label :"Last Name"%>
<%= f.text_field :LastName%>
<%= f.label :"Present address"%>
<%= f.text_field :PresentAddress %>
<%= f.submit "Create Client" %>
<% end %>
그런 다음 주소보기 폴더에서
#addresses/_form.html.erb
<%= form_for ([@client, @client.addresses.build]) do |f| %>
<%= f.label :"Street Name"%>
<%= f.text_field :street_name%>
<%= f.submit "Create Address" %>
<% end %>
그런 다음 client # new에서 :
#client/new.html.erb
<%= render "clients/form" %>
<%= render "addresses/form" %>
또한 사용자 생성을 참조하는 address # create 메소드에 무언가가 있는지 확인하여 데이터베이스에 저장합니다. 또한 속성 이름을 대문자로 사용하지 마십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다