2010-03-08 2 views
2

카테고리 모델에 중첩 된 App 모델을 드래그하여 드래그 할 수 있기를 원합니다. http://railscasts.com/episodes/196-nested-model-form-part-1Rails에서 깊이 중첩 된 속성 정렬

는 여기에 내가 따라 시도한 Railscast입니다.

#Category controller 
def move 
    params[:apps].each_with_index do |id, index| 
    Category.last.apps.update(['position=?', index+1], ['id=?', Category.last.id]) 
    end 
    render :nothing => true 
end 

비슷한 항목으로 카테고리를 정렬 할 수 있지만 속성을 업데이트하고 있으므로 문제가 있습니다. 이것이 내가 Categories 목록을 정렬하는 방법입니다. 난 그냥 App.update_all 할 수 없습니다 제외 앱 카테고리의 속성이기 때문에 추가 검사시

def sort 
    params[:categories].each_with_index do |id, index| 
    Category.update_all(['position=?', index+1], ['id=?', id]) 
    end 
    render :nothing => true 
end 

, 내가 필요한 것을, 동시에 모든 응용 프로그램을 업데이트 할 수 있습니다.

나는

@category = Category.find(params[:id]) 
@app = @category.apps.all 

를 사용하여 시도하지만,이 범주 ID를 전달 아니에요, 그래서 그것이 어떤 종류 알 수 없습니다.

여기 내보기

%ul#apps 
    - for app in @category.apps 
    - content_tag_for :li, app do 
     %span.handle 
     [drag] 
    = h app.title 

= sortable_element("apps", :url => move_categories_path, :handle => "handle") 

어떤 도움에 감사드립니다입니다.

답변

1

위치별로 레코드를 정렬하는 것이 었습니다. 컨트롤러에서 카테고리를 정렬했습니다. 중첩 된 속성 모델 그래서, 나는 모델을 분류 : 나는 응용 프로그램을 이동하면

has_many :apps, :dependent => :delete_all, :order => "position" 

이 위치는 단순히 그럼 난 모델에 적절하게 분류

App.update_all(['position=?', index+1], ['id=?', id]) 

를 호출하여 업데이트됩니다. 카테고리의 ID를 전달할 필요가 없으므로 모든 Apps를 업데이트하십시오. 그러나 조금은 속도가 느려질 수 있으니 걱정하지 않으셔도됩니다.

감사합니다.

관련 문제