2011-10-07 6 views
0

저는 사람들이 장바구니에 코스를 추가 할 수있게 해주는 웹 앱을 만들고 있습니다. 나는 has_many LineItems 장바구니 모델이 있습니다.jquery/ajax를 사용할 때 페이지가 업데이트되지 않습니다.

장바구니에는 사람들이 개별 광고 항목을 삭제할 수있는 ajaxified 버튼이 있습니다. 이것은 잘 작동합니다. 여기에 대한 코드는 다음과 같습니다

_line_item.html.erb :

<div class="delete_line_item"><%= button_to 'Delete', line_item, 
{:method => :delete, :remote => true} %></div> 

line_items 컨트롤러 :

def destroy 
    @user = current_user 
    @line_item.destroy 
    @cart = @user.cart 

    respond_to do |format| 
     format.html { redirect_to(root_path) } 
     format.js 
     format.xml { head :ok } 
    end 
    end 

그런 다음, 내보기/line_items 내에 위치한 destroy.js.erb 파일, 폴더 :

$("#cart").html("<%= escape_javascript(render(@cart)) %>"); 

나는 카트를 비우는 것과 비슷한 것을하고 싶다. 이렇게하려면 카트 컨트롤러에서 업데이트 작업을 사용하고 있습니다. 여기에 해당하는 코드 덩어리는이를 위해 다음과 같습니다

$("#cart").html("<%= escape_javascript(render(@cart)) %>"); 

문제가 있다는 것입니다 :

마지막으로
<div class="empty_cart"><%= button_to 'Empty cart', cart, {:method => :put, :remote => true, 
:confirm => 'Are you sure?'} %></div> 

#carts controller 
    def update 
    if @cart.line_items 
     @cart.line_items.each do |item| 
     item.destroy 
     end 
    end 

    respond_to do |format| 
     if @cart.update_attributes(params[:cart]) 
     format.html { redirect_to(root_path, :notice => 'Cart emptied.') } 
     debugger 
     format.js 
     format.xml { head :ok } 

가 여기 내보기 내에 배치 한 update.js.erb 파일 의/폴더가 카트 장바구니를 비우려고하면 요청이 처리됩니다 (페이지를 새로 고침하면 장바구니가 비어 있음). 그러나 클릭하면 즉시 변경 내용이 표시되지 않습니다. 이것은 내 브라우저가 단순히 .js.erb 파일을 렌더링하지 않는다고 생각하게 만듭니다. update.js.erb 파일을 다른 폴더에 저장하거나 이름을 바꿔야합니까? 아니면 다른 일이 있니?

답변

0

업데이트 작업을 사용하는 대신 업데이트를 사용하지 않고 카트의 파괴 작업을 사용하는 것이 어떻습니까? 그것이 내가 한 일이며, 효과가있었습니다.

+0

내 코드는 다른 것들이 카트의 존재 여부에 달려 있도록 연결되어 있습니다. 따라서 사용자는 장바구니를 비우거나 파괴하지 말아야합니다. (나는 이것이 나쁜 디자인일지도 모른다). 내가 업데이 트를 사용하려는 경우 이것에 대한 아이디어? 또한 destroy 액션을 위해서 destroy.js.erb 파일을 생성 했습니까? 어디에 두셨습니까? 감사. – jyli7

관련 문제