2012-11-28 10 views
1

내 질문은 다음과 같다. 현재 제품 양식에서 사용자는 자신의 제품에 대해 (선택 목록을 통해) 브랜드를 선택할 수 있습니다. 그러나 브랜드가 존재하지 않으면 브랜드/새 양식으로 리디렉션되는 링크를 클릭하여 브랜드를 만들 수 있습니다.레일, 동적 사용자 정의 필드

제품 포매터에 누락 된 브랜드 생성을 직접 처리 할 수있는 방법이 있습니까?

나는 충분히 명확하다.

답장을 보내 주셔서 감사합니다.

답변

1

양식 자체에서 드롭 다운 또는 유형의 브랜드를 텍스트 필드의 새 브랜드 이름으로 선택할 수 있습니다. 라디오를 사용하여 사용자가 두 가지 작업 중 하나를 수행하도록 강요하지만 두 가지 작업 모두를 수행하지는 않습니다. <option> 요소는 브랜드 ID가 아닌 브랜드 이름에 해당하는 값을 갖습니다.

다음, 레일 측면에, 당신은 당신의 브랜드 이름이 고유 가정 find_or_create_by_name을 사용할 수

# assuming a params structure like params[:product][:brand_name] 
class Product < ActiveRecord::Base 
    def brand_name=(name) 
    self.brand = Brand.find_or_create_by_name(name) 
    end 
end 
여전히 단순히 같은 것을 할 것 컨트롤러

:

@product = Product.new(params[:product]) 
+0

감사합니다. 정말 재미 있습니다. 브랜드 모델에 필수 설명 필드가 포함되어 있다면 어떻게 될까요? – m0g

+0

더 복잡해집니다. 'find_or_create_by_name_and_description'을 사용할 수 있고 해킹 인 브랜드 설명이 포함 된 숨겨진 필드가 있거나 사용자가 제품 페이지에서 브랜드를 직접 만들 수 있고 저장시 드롭 다운 메뉴를 다시로드 할 수있는 모달 대화 상자를 제공 할 수 있습니다 Ajax를 통해. 그것은 훨씬 더 복잡한 UX 문제입니다. 브랜드 설명에 대한 요구 사항을 완화하고 설명없이 브랜드가 일시적으로 존재하도록 허용 할 수도 있습니다. 사용자는 나중에 언젠가 설명을 작성하면됩니다. – Brandan

+0

두 센트를 추가하려면 find_or_create_by_name (name : name, description : "some default description")'을 사용하면됩니다. 조회 만 수행하고 이름이없는 경우 해시를 사용하여 레코드를 만듭니다. –

0

을 나는 개인적 것 이런 식으로 jQuery를 사용하십시오. 선택 목록에서 "New Brand"와 같은 것을 선택한 다음 입력 프롬프트를 표시하게합니다. AJAX를 사용하여 새 브랜드를 만든 다음 새 브랜드를 선택한 상태에서 양식에 브랜드 목록을 다시 만듭니다.