2011-04-23 104 views
4

Rails的,DEF滅,不與destroy.js.erbdef destroy,沒有響應destroy.js.erb,爲什麼?

這裏迴應是我的方法:

# DELETE /Groups/1 
    # DELETE /Groups/1.xml 
    def destroy 

    @group = Group.find(params[:id]) 
    @group.destroy 

    respond_to do |format| 
     format.js 
    end 
    end 

在視圖中我有:

<a href="/groups/122" data-confirm="Are you sure?" data-method="delete" rel="nofollow" >Delete</a> 

但是上刪除日誌顯示:

S

tarted POST "/groups/128" for 127.0.0.1 at Fri Apr 22 22:21:31 -0700 2011 
    Processing by GroupsController#destroy as HTML 
    Parameters: {"authenticity_token"=>"J+A2DN87qoigNxw97oK6NWqPQvXt7KAwLMAM7Er/eWM=", "id"=>"128"} 
..... 
Completed 406 Not Acceptable in 372ms 

destory.js.erb永遠不會被調用。任何想法爲什麼?由於

回答

5

OK,很好,一對夫婦的問題在這裏:

第一,

<a href="/groups/122" data-confirm="Are you sure?" data-method="delete" rel="nofollow" >Delete</a> 

這個環節是不是遙控器,你可以看到它在登錄您提供:

Processing by GroupsController#destroy as HTML 

,讓您的鏈接提交一個Ajax請求加:遠程=>真(同你已經有了辦法:確認=> '你確定嗎?'和:method =>:destroy)

秒,你應該禁用佈局呈現時,用JavaScript迴應。

所以,你的動作可能看起來像:

respond_to do |format| 
     format.js { render :template => 'groups/destroy.js.erb', :layout => false } 
    end 

爲了方便,我已經加入這個我位指示:

layout Proc.new { |controller| controller.request.xhr?? false : 'application' } 

,這樣的佈局將不會被渲染,如果請求的xhr類型。那麼你可以讓你的行爲像現在一樣,它應該工作

0

你有沒有安裝jQuery的軌道寶石?還請確認您有:
csrf_meta_tag
javascript_include_tag:默認
在佈局
PS似乎是你的控制器無法響應js格式,您還可以嘗試在您的控制器類中添加
respond_to:html,:js,如下所示:

class MyController < ActionController 
    respond_to :html, :js 
    .... 
    def destroy 
    ... 
    end 
end 

請讓我知道,如果它可以幫助你

0

檢查本地軌幫手刪除鏈接的輸出返回某事像

<a onclick="if (confirm('Are you sure?')) 
    { var f = document.createElement('form'); 
     f.style.display = 'none'; 
     this.parentNode.appendChild(f); 
     f.method = 'POST'; 
     f.action = this.href; 
     var m = document.createElement('input'); 
     m.setAttribute('type', 'hidden'); 
     m.setAttribute('name', '_method'); 
     m.setAttribute('value', 'delete'); 
     f.appendChild(m); 
     var s = document.createElement('input'); 
     s.setAttribute('type', 'hidden'); 
     s.setAttribute('name', 'authenticity_token'); 
     s.setAttribute('value', 'GAsTX1/XJAAoXBxJuE28EPW9jraQd5N39WeeuvakLWA='); 
     f.appendChild(s); 
     f.submit(); }; 
     return false;" 
href="/categories/1">Destroy</a> 
相關問題