나는 Proposal
모델을 가지고 있는데, has_one은 Quote
입니다.simple_form을 사용하여 중첩 된 모델의 경로
저는 simple_form을 사용하여 두 개체를 동시에 만듭니다. 문제는 다른 견적의 복제품 인 견적이 다른 모델 Brief
에 속하기를 바랍니다. 내 컨트롤러,이는 다음과 같습니다
def new
@proposal = Proposal.new
@brief = Brief.find(params[:brief_id])
@proposal.brief = @brief
@invoice_quote_element = @brief.invoice_quote_element.deep_clone include: [ :expense_categories, { expense_categories: :expenses } ]
end
, 나는
<%= simple_form_for [@proposal.brief, @proposal, @invoice_quote_element] do |f| %>
으로 폼을 추가하지만이 작동하지 않습니다, 나는 다음과 같은 오류 받고 있어요 :
을undefined method `brief_proposal_invoice_quote_elements_path'
내 노선들은 나에게 깨끗한 것 :
resources :proposals do
resources :invoice_quote_element
member do
get 'edit_legal'
patch 'update_legal'
get 'quote'
get 'view_quote'
get 'download_quote'
end
end
지금, 나는 simple_form에서
<%= simple_form_for [@proposal.brief, @proposal] do |f| %>
양식을 표시 단지 벌금 @invoice_quote_element를 제거하지만, create
방법은 새로운 오류 제기 때문에, 제출 할 수없는 경우 :
Couldn't find InvoiceQuoteElement with ID=299 for Proposal with ID=
글쎄, 웬일인지, 그렇지 않습니다. 내가 생각한대로, 내 경로에 일치하는 리소스를 추가했지만, <% = simple_form_for [@proposal, @invoice_quote_element]로 바꾸면 do | f | %>, 나는 이것을 얻는다 : 정의되지 않은 메소드'proposal_invoice_quote_elements_path '. invoice_quote_elements가 복수형 인 이유는 모르겠지만 제안서에는 하나만 첨부되어 있습니다. –
'@ invoice_quote_element'는 nil이므로 invoice_quote_elements는 복수형입니다. 위의 링크에서 '새 레코드를 인식하고 콜렉션에 매핑됩니다'. 리소스를'resources : invoice_quote_elements'로 변경하면 제대로 작동합니다. – phamhoaivu
실제로 작동했습니다! 이제는 새로운 오류가 발생합니다. {: action => "index", : controller => "invoice_quote_elements", : proposal_id => nil} 필수 키가 누락되었습니다 : [: proposal_id]와 일치하는 경로가 없습니다. 제안서 # new'''에 표시되므로 제안서에 아직 ID가 없습니다. –