1

我已經建立了管理的命名空間,以便在管理方面的訪問模式:/admin/pages從命名空間中刪除

但是我有以下問題 我不能得到的刪除功能Admin::PageController下工作,例如或任何的我的模特。

有誰知道如何做到這一點。 我有以下幾點:

聯繫::的PageController我有以下

def destroy 
    @page = Page.find(params[:id]) 
    @page.destroy 

    respond_to do |format| 
    format.html { redirect_to admin_pages_url } 
    format.json { head :ok } 
    end 
end 

然後在那裏我希望有一個鏈接刪除的記錄,我有以下我的網頁索引文件:(/管理/頁)

<%=link_to admin_page_path(page), :class => 'ico del' do %> 
    <%='Delete'%> 
<% end %> 

似乎沒有工作。任何人都知道如何讓這個工作?

回答

0

link_to幫助程序默認爲GET請求,除非您指定其他屬性來告訴它它是如何處理的。

在這種情況下,你需要設置一些額外的參數:

<%=link_to "Delete", admin_page_path(page), :class => "ico del", :remote => true, :method => :delete %> 

實際發生的背景是什麼Rails UJS(非侵入式JavaScript適配器)捕獲click事件,並通過發送AJAX請求。所以你應該看到它用POST(但它也通過_method => delete)來觸發你的服務器來刪除該對象。

我還假設你的路線設置正確。喜歡的東西:

namespace :admin do 
    resources :pages 
end 
+0

喜是命名空間是正確的,也沒有工作。它是調出顯示方法也 – user964900

+0

好吧,如果我改變link_to button_to它的作品,但不好看,但作品 – user964900

+0

'button_to'的原因是因爲它生成一個表單提交按鈕給你(這意味着它不是通過AJAX提交)。所以問題是,你可能沒有安裝jQuery或Rails UJS jQuery適配器。確保你按照說明操作(對於Rails 3.1,我假設你在這裏):https://github.com/rails/jquery-ujs#readme – iwasrobbed

1

你已經錯過了:在通話的link_to方法選項

link_to 'Delete', admin_page_path, :confirm => 'Are you sure?', :method => :delete 

<%=link_to admin_page_path(page), :class => 'ico del',:method => :delete do %> 
    <%='Delete'%> 
<% end %> 
+0

第一個選項調用路由錯誤沒有路由匹配{:action =>「show 「,:controller =>」admin/pages「} Secound選項只是調出顯示方法並顯示記錄的詳細信息 – user964900

+0

@Naveed你錯過了傳遞'page'對象,所以它知道要刪除哪個對象。 ... – iwasrobbed

+0

@iWasRobbed不,我按照慣例故意做了它,如果當前動作顯示'admin_page_path'將從參數中獲得id並將它傳遞給'url_for' helper,因此可以說如果你點擊admin/pages/2調用'admin_page_path '會生成/ admin/pages/2但是它很危險,因爲現在'admin_people_path'也會生成admin/people/2 :) – Naveed