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 адаптер) фиксирует событие щелчка и отправляет запрос через AJAX. Поэтому вы должны увидеть, что он поразил ваш сервер POST (но он также проходит в _method => delete), чтобы удалить объект.

Я также предполагаю, что ваши маршруты настроены правильно. Что-то вроде:

namespace :admin do 
    resources :pages 
end 
+0

Привет да пространство имен правильно, тоже не работает. он вызывает метод show также – user964900

+0

Хорошо, если я меняю link_to на button_to, он работает, но не выглядит красивым, но работает – user964900

+0

Причина, по которой 'button_to' работает, потому что она генерирует форму с кнопкой отправки для вас (что означает, что это не отправляя его через AJAX). Таким образом, проблема в том, что у вас, вероятно, нет jQuery или адаптера jQuery Rails UJS. Убедитесь, что вы следуете инструкциям (для 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 просто вызывает метод show и показывает данные записей – user964900

+0

@Naveed И вы пропустили передачу в' page', чтобы он знал, какой объект удалить. ... – iwasrobbed

+0

@iWasRobbed Нет, я сделал это намеренно, по соглашению, если текущее действие показывает 'admin_page_path', получит id из params и передаст его в помощник' url_for', так что скажем, если вы нажмете admin/pages/2, вызывая 'admin_page_path 'будет генерировать/admin/pages/2, но это опасно, потому что теперь' admin_people_path' также будет генерировать admin/people/2 :) – Naveed

Смежные вопросы