从命名空间中删除

Deleting from a namespace

提问人:user964900 提问时间:1/18/2012 最后编辑:Brian Tompsett - 汤莱恩user964900 更新时间:8/20/2015 访问量:1389

问:

我已经设置了一个管理命名空间,以便访问管理区域中的模型:/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 %>

似乎不起作用。有人知道如何让它工作吗?

ruby-on-rails ruby-on-rails-3.1 链接到 不显眼的 javascript

评论


答:

0赞 iwasrobbed 1/18/2012 #1

帮助程序默认为请求,除非您指定其他属性来告诉它您希望如何处理它。link_toGET

在这种情况下,您需要设置一些额外的参数:

<%=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_pathurl_foradmin_page_pathadmin_people_path
0赞 Naveed 1/19/2012
@user964900检查模板中是否有包含 rails.js