2017-11-27 1 views
0

레일즈, JQuery, 고치 및 선택을 사용하여 페이지에 양식을 만듭니다. 이 응용 프로그램은 식당 메뉴를 만드는 데 사용됩니다.새 div를 동적으로 생성 한 후 "selectize-dropdown-content"가 비어 있습니다.

/menu/new에는 메뉴 이름 (예 : '점심')을 입력 할 수있는 페이지와 '메뉴 항목 추가'및 '메뉴 만들기'버튼이 있습니다. 메뉴 항목을 추가하기 위해 클릭 할 때 카테고리, 항목 이름, 가격 및 설명 필드가있는 양식이 나타납니다. 원하는만큼 메뉴 항목을 추가 할 수 있습니다.

모든 것이 정상적으로 작동하므로 내 문제는 기능 중 하나가 아닙니다. 만들기 동작은 메뉴, 메뉴 항목 및 메뉴 항목 범주를 원하는대로 만듭니다. 내 문제는 선택입니다.

"새 메뉴 항목 추가"를 클릭하면 이전에 언급 한 메뉴 항목의 양식이 제공되고 "양식"은 이전에 작성한 범주의 드롭 다운 목록입니다. 문제는,리스트는 한 번에 페이지의 형태 중 하나 채워입니다 :

Like so

당신이 볼 수 있듯이, 단지 새로운 형태의 범주 드롭 다운에 데이터를 표시합니다. 페이지에 나타나는 처음 두 개가 이제 비어 있습니다. 데이터는 여전히 있지만 표시되지 않습니다. 이전 메뉴 항목 양식을 가져와 카테고리 목록을 표시하는 방법을 알 수 없습니다.

'메뉴 만들기'를 누르면 데이터가 올바르게 저장되므로 이것은 순전히 화장품입니다. 그러나 새 메뉴 항목을 추가하기 위해 클릭 한 후 범주를 편집하려는 경우 문제가됩니다.

$('form').on('cocoon:after-insert', function() { $('.selectize').selectize(); });

양식 :

다음은 jQuery의

<div class="field"> <%= f.select :category_id, Category.all.pluck(:name, :id), {}, { class: "selectize" } %> </div>

내가 즉, 적은 수의 단어에서 그것을 설명하는 방법을 잘 밝혀지지 않았다 바랍니다. 미리 감사드립니다!

+0

그냥 확인 : 링크를 클릭하여 새 메뉴 항목을 추가 할 때까지 선택 상자에 올바른 내용이 표시됩니다. 맞습니까? 콜백이 페이지의 _all_ select-boxes를 선택하고'selectize'를 다시 적용하면 그 효과를 설명 할 수 있습니까? 또는 페이지로드/새로 고침시 기존 항목의 선택 상자가 손상됩니까? – nathanvda

+0

부분적으로 정확합니다."새 항목 추가"가 클릭 될 때까지 하나의 선택 상자 만 올바른 내용을 표시합니다. 그 다음에는 나타나는 새로운 선택 상자에 원하는 드롭 다운 내용이 표시됩니다. 왜 이런 식으로 행동하는지 모르겠습니다. FWIW 페이지에 새 div를 추가 한 후 이전 div를 숨김으로써 해결 방법을 찾았습니다. 이상적은 아니지만 최소한 문제가 덜 발생했습니다. 객체는 올바르게 표시되지 않더라도 제출을 치면 올바른 값을 유지하므로 데이터베이스에 올바르게 저장됩니다. –

+0

selectize 클래스를 제공하지 않으면 작동합니까? – nathanvda

답변

0

이 호는의 연속 호출은 이전에 을 선택하여 선택 상자를 "중단"합니다. 그래서 저는 여러분의 관점을 구축 할 때 어떻게 든 부를 것이라고 생각합니다. 각 선택 상자에 대해 그 명령을 시도하면 실제로 마지막 상태가 "양호한"상태로 유지됩니다.

양식을 만들 때 한 번만 호출해야합니다. 예 :

$(document).on 'turbolinks:load',() -> 
    $('.selectize').selectize() 

다음 누에 고치 콜백에서

가 (다시 대신 선택 박스 모든 selectizing 의)만을 가지고 새로 삽입 된 HTML 고려하여하려면 다음과 같은 작업을 수행합니다 : menus.js.coffee 당신에 같은

$('form').on 'cocoon:after-insert', (e, inserted_item) -> 
    $(inserted_item).find('.selectize').selectize() 
+0

굉장한 젠체하는 사람! 고마워, 그건 속임수 였어! –

관련 문제