2016-11-09 4 views
0

나는 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= 

답변

2

만약 당신 돈 양식에 :url 매개 변수를 지정하면 Rails FormHelperpolymorphic_path을 사용하여 양식 작업 URL을 생성합니다. 자세한 내용은 Here을 참조하십시오. 경로가 정의되어 있지 않으므로 첫 번째 오류가 발생합니다. @invoice_quote_element을 제거하면 생성 된 경로는 brief_proposals_path이되며 이는 라우트 파일에 정의되어있을 수 있습니다. 그러나 양식을 제출할 때 레일즈는 의 컨트롤러 proposals을 실행합니다. 오류가 발생할 수 있습니다. 어떤 컨트롤러와 동작이 호출되는지를 알기 위해 로그를 점검해야합니다. 귀하의 경우에는 <%= simple_form_for [@proposal, @invoice_quote_element] do |f| %>가 작동해야한다고 생각합니다.

+0

글쎄, 웬일인지, 그렇지 않습니다. 내가 생각한대로, 내 경로에 일치하는 리소스를 추가했지만, <% = simple_form_for [@proposal, @invoice_quote_element]로 바꾸면 do | f | %>, 나는 이것을 얻는다 : 정의되지 않은 메소드'proposal_invoice_quote_elements_path '. invoice_quote_elements가 복수형 인 이유는 모르겠지만 제안서에는 하나만 첨부되어 있습니다. –

+0

'@ invoice_quote_element'는 nil이므로 invoice_quote_elements는 복수형입니다. 위의 링크에서 '새 레코드를 인식하고 콜렉션에 매핑됩니다'. 리소스를'resources : invoice_quote_elements'로 변경하면 제대로 작동합니다. – phamhoaivu

+0

실제로 작동했습니다! 이제는 새로운 오류가 발생합니다. {: action => "index", : controller => "invoice_quote_elements", : proposal_id => nil} 필수 키가 누락되었습니다 : [: proposal_id]와 일치하는 경로가 없습니다. 제안서 # new'''에 표시되므로 제안서에 아직 ID가 없습니다. –