2014-11-16 6 views
0

다소 불규칙한 방식으로 을 사용하려고합니다.사용자에게 모든 하위 레코드를 표시하지 않고 accepts_nested_attributes_for를 새 개체에 사용하십시오.

class Estimate 
    has_many :moneys   , :as => :moneyable, :dependent => :destroy 
    accepts_nested_attributes_for :moneys 
    ... 
end 

을하지만, 추정의 편집 형태, 나는 사용자가 이전의 모든 돈의 가치의 중첩 된 필드 셋을보고 싶지 않아 :

추정치는 많은 돈이있다. 나는 그녀에게 한 세트의 빈 돈을 보길 원한다. Rails의 관점에서, 견적은 모든 이전 돈의 좋은 역사를 가지지 만, 사용자의 관점에서 그녀는 견적을 변경하려는 경우 채울 수있는 빈 필드를 볼 수 있습니다.

= f.semantic_fields_for @estimate.moneys.build do |money| 
    = money.input :quantity 
    ... 

일반적으로 당신은 f.semantic_fields_for :moneys을 할 거라고,하지만 그 이전의 모든 자식 돈의 레코드를 표시합니다. 자바 스크립트를 사용하여 즉시 필드를 생성 할 수도 있지만, 사용자가 클릭해야하는 또 다른 버튼이기 때문에 피하고 싶습니다. 그래서 나는 폼에서 새로운 객체를 만들 것이다. (나는 결국 컨트롤러로 옮겨 갈 것이다.

위와 같은 새 개체를 만들면 Rails가 money 매개 변수를 :money_attributes으로 전달하지 않기 때문에 을 얻지 못할 것입니다. 나는 부모의 ID를 추가, 컨트롤러 주위 faff 수

Parameters: {..."estimate"=>{"book_id"=>"1418", ..., "money"=>{"quantity"=>"321",...}}, "commit"=>"Save", "id"=>"67"} 

(이 경우, 입력을이 다형성의 관계이기 때문에,)하지만, 그 못생긴 : 그것은 :money로 전달할 수 있습니다. 새 개체를 만들고 뷰에 모든 하위 레코드를 표시하지 않는 동안 ANAF를 사용할 수있는 방법이 없습니까?

답변

0

오케이, 문제를 이해합니다. 가능한 해결책은 거의 없습니다.

  • 하나는 수동으로 폼 빌더 객체의 객체가 기록 새로운인지 아닌지
  • 당신은 확인할 수 속성 원시 HTML과 형태를 조작이다?

    = f.semantic_fields_for @estimate.moneys.build do |money| 
        - if money.object.new_record? 
        = add your form attribute here 
    

    그래서 이것은 단지 당신이 양식에 대한 새로운 중첩 된 레코드를 작성하는 양식을 보여 드릴 것입니다 :

는 다음 조건 5 월처럼 보인다.

이 답변으로 아이디어를 얻으시기 바랍니다.

+0

그래, 꽤 좋은 생각이야! 그러나 새로운 객체를 빌드한다는 것은 Rails가 매개 변수를 매개 변수로 전달하지 않는다는 것을 의미합니다. money_attributes, just : money, 그래서 문제를 해결하지는 못합니다. – snowangel

+0

오케이, 너도해볼 수있어. f.semantic_fields_for : money_attributes, @ 견적.moneys.build do | 돈 | 여기에 대한 참조입니다 : http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for – Rubyrider

+1

그게 좋을거야! – snowangel