2014-09-29 1 views
2

레일즈 앱에서 sales_opportunity를 만들고 싶습니다. sales_opportunity는 사용자 및 회사에 속합니다. 이 코드는 현재 유효하며 사용자가 데이터베이스에서 미리 정의 된 회사 모음을 기반으로 sales_opportunity를 연결할 회사를 선택할 수 있습니다. 필자가 원하는 것은 "새로운 회사 추가"기능을 가진 collection_select 드롭 다운 메뉴에 회사/새 페이지로 이동하는 필드가있는 기능입니다. 현재 사용자가 이전에 조직을 조직에 추가 한 경우가 아니라면 sales_opportunity를 제출할 수 없습니다 (사용자 belongs_to 조직, 조직 belongs_to 조직).레일스의 collection_select 필드에 "add new"링크를 삽입하는 방법

다음과 같이 필드에 대한 코드는 다음과 같습니다

<div class="form-group"> 
    <%= f.label :company_id, :class => "col-md-4 control-label" %> 
<div class ="col-md-8"> 
    <%= f.collection_select :company_id, @user.organization.companies(:company_name), :id, :company_name %> 
</div> 
</div> 

내가 존재하지 않는 경우는 목록에 회사를 추가하는 사용자를 가능하게 할 것이다이 드롭 다운에 대한 링크를 추가 할 수있는 방법이 있나요 (또는 경우 그가 추가하고 싶은 회사는 이미 목록에 존재하지 않습니다.)

이 문제를 극복하기 위해 생각할 수있는 유일한 방법은 아무 것도없는 경우 회사를 추가하는 단추에 대한 링크가있는 if 문을 사용하는 것입니다. 그러나 회사는 데이터베이스에 있지만 시나리오에는 해당하지 않는 시나리오를 다루지는 않습니다. 사용자가 원한다.

아이디어가 있으십니까?

+0

당신은 자바 스크립트 – RSB

+0

감사와 함께 할 수있는 - 나는 내가 배울 수있는 튜토리얼/가이드를 찾을 수있는 아이디어 더? – Zoinks10

답변

1

JavaScript를 사용하여 수행 할 수 있지만 약간의 작업이 필요합니다. 질문은 꽤 광범위하므로 어떤 코드도 포함시키지 않았지만 출발점으로 기본 단계를 설명했습니다.

1) 드롭 다운을 보려면 JavaScript 이벤트 핸들러를 추가해야합니다. '새 추가'옵션을 선택하면 Ajax 요청이 트리거됩니다.

2) Ajax 요청은 작성 작업을 렌더링합니다 (모달 상자는 사용자에게 유용 할 것임).

3) 사용자가 양식을 제출하면 Ajax를 통해 업데이트됩니다.

4) Ajax를 통해 드롭 다운을 다시로드하여 새 회사를 표시하십시오.

당신이 볼 수 있듯이, 복잡성의 대부분은 레일보다는 JS 측에 :)

+0

도움 주셔서 감사합니다. 나는 오늘 Ajax/Javascript를 배우는 날을 보낼 것입니다 ... – Zoinks10