2014-07-17 2 views
1

(line_items이 다형성 인) Quote 클래스가 있습니다. 견적에는 작성시 line_item이 하나 이상 있어야합니다. 견적 작성 양식에는 광고 항목 추가 전용 섹션이 있습니다. 내 경로는 다음과 같습니다 : 내 경로를 의미 이상위 양식의 중첩 된 리소스 생성

resources :quotes, shallow: true do 
    resources :line_items 
end 

다음과 같이 : 나는 버튼이, 클릭, 링크가 인용 양식의 개별 항목 섹션에서

     POST /quotes/:quote_id/line_items(.:format)  line_items#create 
new_quote_line_item GET /quotes/:quote_id/line_items/new(.:format) line_items#new 

line_item 만들기 모달을 렌더링하는 컨트롤러 동작은 new_quote_line_item입니다. 내 문제는 견적이 아직 만들어지지 않았기 때문에 경로에 사용할 :quote_id이 없다는 것입니다. Rails Way ™를 달성하려면 어떻게해야합니까? 나는 아약스를 사용하는 것을 고려하고 있었지만,이 상황에 너무 과격한 지 잘 모르겠습니다. 당신의 도움을 주셔서 감사합니다!

+0

표시하지 않습니까? 견적이 아직 생성되지 않았기 때문에 존재하지 않는 레코드에 속한 LineItem을 생성하는 링크를 표시하는 이유는 무엇입니까? --- 최종 사용자가 동일한 양식의 견적 레코드 및 품목을 생성 할 수 있도록하는 중첩 된 양식이 필요할 수 있습니다. 이것이 당신이 원하는 것이라면, 나는 대답을 게시 할 것입니다. – MrYoshiji

+0

나는 그것이 (당신의 의견을 오해하지 않는 한) 현재 구현하려고하는 것이라고 생각합니다. 견적 생성 양식이 있으며 그 안에 사용자가 하나 이상의 line_item을 견적에 추가 할 수있게하려고합니다. – davidicus

+0

체크 아웃'accepts_nested_attributes_for : nested_resource_name';) – MrYoshiji

답변

1

아약스

당신은이에 대한 ajax 기능이 필요하지 않을 - 아약스는 당신이 기본적으로 페이지를 다시로드하지 않아도 의미 서버 비동기에서 데이터를 끌어 할 수 있습니다.

- atomAltera에 의해 언급으로

중첩는 accepts_nested_attributes_for 같은 소리, 당신이 찾고있는 무엇

속성 -

그것은 소리 부모로부터 dependent 모델을 만들 수있는 제게는 line_items을 채우기 전에 quote을 만들어야합니다. 실제로는 매우 간단합니다 : ActiveRecord :

,
#app/models/quote.rb 
Class Quote < ActiveRecord::Base 
    has_many :line_items 
    accepts_nested_attributes_for :line_items 
end 

#app/controllers/quotes_controller.rb 
Class QuotesController < ApplicationController 
    def new 
     @quote = Quote.new 
     @quote.line_items.build 
    end 

    def create 
     @quote = Quote.new(quote_params) 
     @quote.save 
    end 

    private 

    def quote_params 
     params.require(:quote).permit(:quote, :attributes, :new, line_items_attributes: [:line, :items, :attributes]) 
    end 
end 

-

어떤 추가 정보가 필요하면 알려 주시기 바랍니다!

1

당신은 당신의 모델에서 사용자 accepts_nested_attributes_for 방법은 LineItem을위한 속성과 fields_for 도우미에 동의해야

귀하의 모델을해야 보이는 같은 :

form_for @quote do |f| 
    f.fields_for :line_items do |f2| 
     ... 
    end 
    ... 
end 
: 당신은 같은 템플릿

class Quote < ActiveRecord::Base 
    accepts_nested_attributes_for :line_item 
    ... 
end 

그리고