2010-12-04 3 views
0

난 그냥 자리에 awesome_nested_set 넣어 가지고 모두 잘 노력하고 있습니다. 나는 github 링크에 나열된 Category.rebuild!을 사용하여 acts_as_tree에서 변환했습니다.awesome_nested_set 부모를 선택하지 않는 방법은 무엇입니까?

문제가 있습니다. 부모가없는 최상위 레벨에 노드를 만들 수있는 옵션이 없습니다 (예 : - 양식 선택에 공백이 없습니다. <option>).

<%= select_tag 'parent_id', options_for_select(nested_set_options(Page) {|i| "#{'..' * i.level} #{i.name}" }) %> 

나는 그렇게 내가 최상위 수준에 페이지를 만들 수 있도록하는 방법을 확실 해요 그래서 RoR에의 newb 해요 : 이것은 내가 사용하고있는 select_tag입니다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까? 루트 수준에서 레코드를 생성하기 위해

답변

2

, 단순히 parent_id 전무을 둡니다. 다음 옵션을 추가해야합니다.

<%= select_tag 'parent_id', options_for_select(
     nested_set_options(Page) {|i| "#{'..' * i.level} #{i.name}" }.unshift(["No Parent", nil]) 
    ) %> 

아마 도우미로 옮겨야 할 때입니다.

+0

감사 아담! 이것을 도우미로 만들 것입니다. 머리를 주셔서 감사합니다! – jyoseph

+0

@jyoseph 이제 생각해 봅시다. 더 나은 UI 선택은 아마도 사용자가 부모를 지정하기 전까지 필드를 비활성화 상태로 유지하는 것입니다. 그건 약간의 JS가 필요합니다. –

+0

다시 한 번 감사드립니다. Adam. 유일한 문제는 내가 대신 "부모"옵션이 선택되어, 상태가 저장되지 않습니다 (원래 부모가 유지 선택하지 않는 기존 레코드를 편집 할 때입니다이와 다 퉜다. 당신은'options_for_select' 말할 필요 @jyoseph – jyoseph

1

unshift 방법을 통해이 작업을 수행하는 것은 좋지 않습니다. 사용 : 대신 include_blank => 사실.

<%= f.select :parent_id, nested_set_options(Page){|i| "#{'-' * i.level} #{i.name}" }, {:include_blank => true}, {:class => "form-control"} %> 
관련 문제