Что делать, если более одного представления необходимо связать с действием уничтожения? - PullRequest
2 голосов
/ 07 января 2011

Я не уверен, что здесь делать. У меня есть два леса: группы и пользователи. В двух разных представлениях группы я перечисляю пользователей группы и вызываю метод Destroy для users_controller.

Поскольку во втором представлении теперь вызывается действие уничтожения, мне нужен какой-то способ определения того, что называется действием уничтожения, потому что мне нужно различное перенаправление и специальное уведомление для каждого из двух представлений группы.

Существует ли простой способ решения этой проблемы, или решение может быть чем-то вроде создания копии метода Destroy и определения нового маршрута для него?

-Спасибо!

edit: может быть, это глупая идея, но я подумал ... Что касается двух задействованных представлений, что если я сохраню их имена представлений в сеансе при создании представлений (в качестве флага для действия Destroy, которое нужно знать к какому виду перенаправить и в какое пользовательское флэш-уведомление отправлять обратно)?

Ответы [ 2 ]

1 голос
/ 07 января 2011

Передайте параметр со ссылками и проверьте эти параметры в вашем действии.

Как,

link_to "Delete", :controller => "groups", :action => "destroy", :pass_par => "view1"

link_to "Delete", :controller => "groups", :action => "destroy", :pass_par => "view2"

Контроллер:

def destroy
  if params[:pass_par] == "view1"
    redirect_to view1 
  else
    redirect_to view2
  end
end
0 голосов
/ 07 января 2011

Метод уничтожения не очень длинный, так что да, продолжайте и скопируйте его.

Если это выглядит так:

  # DELETE /users/1
  def destroy
    @user = User.find(params[:id])
    @user.destroy
    redirect_to users_url
  end

Это не должно повторяться вообще,и это сделает ваш код проще для чтения в конце.

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