"link_to: method =>: delete" на странице просмотра объекта - PullRequest
0 голосов
/ 04 февраля 2010

Я хочу иметь ссылку «Удалить» на странице просмотра объекта в моем проекте Ruby on Rails. Я сталкиваюсь с проблемами как

<%= link_to "Delete", @member, :confirm => 'Are you sure?', :method => :delete %>

загружает страницу, на которой он находится, после запуска метода, пытаясь таким образом загрузить несуществующий объект. Я хотел бы вернуться на страницу индекса после удаления объекта.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 04 февраля 2010

Проблема в вашем контроллере.

Убедитесь, что действие уничтожения перенаправляет на индекс, и все будет в порядке.

Если вы использовали scaffolding для генерации ваших контроллеров, это уже должно быть сделано за вас. Пример:

class MembersController < ApplicationController
  ...

  def destroy
    @member = Member.find(params[:id])
    @member.destroy
    respond_to do |format|
      format.html{ redirect_to members_url}
      format.xml { head :ok}
    end
  end
end
1 голос
/ 04 февраля 2010

В моих проектах я стараюсь создать before_filter в моем контроллере, который находит объект, и если он не существует, он автоматически перенаправляет обратно на индексный URL-адрес по умолчанию с сообщением об ошибке, например:

def find_object
  @object = Object.find(params[:id])
rescue ActiveRecord::RecordNotFound => e
  flash[:error] = "Sorry, that object was not found. Please try again."
  redirect_to objects_path
end

Вам все равно потребуется перенаправление после того, как объект уничтожен в контроллере, но по крайней мере это спасет пользователей от случайных попыток удаления / просмотра несуществующих объектов и выброса исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...