has_one/belongs_to 연관에 연결된 두 개의 모델이 있습니다. 컴퓨터 및 Ipv6Address 각각.Rails - 중첩 된 양식 fields_ 렌더링하지 않음
Ipv6Address 테이블에 원하는 모든 항목이 미리 채워져 있으며 이제 컴퓨터/편집 양식의 드롭 다운 목록에서 Ipv6의 항목을 선택하여 연결해야합니다. 와. 미리 채워야하는 이유는 컴퓨터가 관련시킬 수있는 IPv6의 범위가 미리 정의되어 있기 때문에 가능한 한 쉽게 최종 사용자가 목록에서 맹목적으로 뭔가를 선택하기를 원합니다. 왜 그들이 그것을하고 있는지 이해해야합니다. 그러나 그들이 원하는 것을 골라 낼 수있는 기회가 무엇인지를 아는 사람에게 제공하십시오.
지금까지 본 모든 내용은 새로운 양식에 동시에 두 개체를 모두 만든 다음 나중에 편집 할 때만 효과가있는 것으로 보입니다.
필자는 온라인에서 찾은 예제에 따라 MVC를 설정하려고했지만 비슷한 주제에 대해 다른 stackoverflow 질문을 체크 아웃했습니다.
컴퓨터 모델 :
class Computer < ActiveRecord::Base
has_one :ipv6_address
accepts_nested_attributes_for :ipv6_address
...
Ipv6Address 모델 :
class Ipv6Address < ActiveRecord::Base
attr_accessible :computer_id, :ip_address
belongs_to :computer
...
컴퓨터 컨트롤러 :
class ComputersController < ApplicationController
def new
@computer = Computer.new
@ipv6s = Ipv6Address.where('computer_id IS NULL').limit(5)
end
def edit
@computer = Computer.find(params[:id])
@ipv6s = Ipv6Address.where('computer_id = #{@computer.id} OR computer_id IS NULL').order('computer_id DESC').limit(5)
end
컴퓨터 새로운 형태 :
<%= simple_form_for(@computer) do |f| %>
<%= f.fields_for :ipv6_address do |v6| %>
<%= v6.input :ipv6_address, :collection => @ipv6s %>
<% end %>
<% f.button :submit %>
<% end %>
이 새 양식이 렌더링되면 ipv6_address에 대한 입력 필드가 없지만 오류는 발생하지 않습니다. 렌더링 된 페이지의 소스를 확인했는데 "ipv6"을 참조하지 않았습니다.
나는에 fields_for 변경하는 경우 :
<%= f.fields_for :ipv6_address, @ipv6s do |v6| %>
가 그럼 난 페이지,
@ipv6s
의 모든 개체에 대한 하나, @ ipv6s에있는 개체의 전체 목록을 포함하는 각에 나타나는 여러 드롭 다운 선택 필드를 얻을 수 있습니다.
문제에 대한 훌륭한 접근 방식, 내가이 일에 대해 있지만 꽤 잘 내 머리에 함께 오지 않았다 어떤 이유로 잠시 생각 기억 나는 볼 수 있습니다 시간, 그리고이 게시물을 업데이 트됩니다. – bdx
감사합니다. 이렇게하면 다른 모델도 정리할 수 있습니다. – bdx
굉장! 잘 듣고 :) –