Удаление из пространства имен - PullRequest
1 голос
/ 18 января 2012

Я установил пространство имен администратора для доступа к моделям в области администратора: /admin/pages

Однако у меня возникла следующая проблема: я не могу заставить функцию удаления работать, например, в Admin::PageController или любой другойиз моих моделей.

Кто-нибудь знает, как это сделать.У меня есть следующее:

Admin :: 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

Затем в моем файле индекса страницы, где я хочу ссылку для удаления записи, у меня есть следующее: (/admin / pages)

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

Не похоже на работу.Кто-нибудь знает, как заставить это работать?

Ответы [ 2 ]

1 голос
/ 18 января 2012

вы пропустили: опция метода в 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 голосов
/ 18 января 2012

Помощник 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
...