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