提问人:user964900 提问时间:1/18/2012 最后编辑:Brian Tompsett - 汤莱恩user964900 更新时间:8/20/2015 访问量:1389
从命名空间中删除
Deleting from a namespace
问:
我已经设置了一个管理命名空间,以便访问管理区域中的模型:/admin/pages
但是我有以下问题
例如,我无法让删除函数工作,或者我的任何模型。Admin::PageController
有谁知道如何做到这一点。 我有以下几点:
管理员::P ageController 我有以下几点
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
然后在我的页面索引文件中,我想要一个链接来删除记录,我有以下内容:(/admin/pages)
<%=link_to admin_page_path(page), :class => 'ico del' do %>
<%='Delete'%>
<% end %>
似乎不起作用。有人知道如何让它工作吗?
答:
0赞
iwasrobbed
1/18/2012
#1
帮助程序默认为请求,除非您指定其他属性来告诉它您希望如何处理它。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
1/18/2012
嗨,是的,命名空间是正确的,也不起作用。它还提出了 show 方法
0赞
user964900
1/18/2012
好的,如果我将link_to更改为button_to它可以工作,但看起来不太好,但可以工作
0赞
iwasrobbed
1/18/2012
之所以有效,是因为它为您生成了一个带有提交按钮的表单(这意味着它不是通过 AJAX 提交的)。所以问题是,你可能没有安装jQuery或Rails UJS jQuery适配器。确保你遵循说明(对于Rails 3.1,我假设你正在使用):github.com/rails/jquery-ujs#readmebutton_to
1赞
Naveed
1/18/2012
#2
您错过了调用中的 :method 选项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赞
user964900
1/18/2012
第一个选项显示路由错误 没有路由匹配 {:action=>“show”, :controller=>“admin/pages”} Secound 选项只显示 show 方法并显示记录详细信息
0赞
iwasrobbed
1/18/2012
@Naveed 而且你错过了传入对象,所以它知道要删除哪个对象......page
0赞
Naveed
1/19/2012
@iWasRobbed不,我是故意这样做的,按照惯例,如果当前操作是显示将从参数中获取 id 并将其传递给助手,所以假设如果您点击 admin/pages/2 调用将生成 /admin/pages/2 但它很危险,因为现在也会生成 admin/people/2 :)admin_page_path
url_for
admin_page_path
admin_people_path
0赞
Naveed
1/19/2012
@user964900检查模板中是否有包含 rails.js
评论