Почему мое приложение использует уничтожение вместо пользовательских действий? - PullRequest
0 голосов
/ 13 июня 2019

Я новичок в Ruby. Извините за мой английский.

Мне нужно создать кнопку для уничтожения всех пользовательских объектов (модель с именами Relations и ListRelations).

Это часть моего config / rout.rb:

  devise_for :users, controllers: { omniauth_callbacks: 'omniauth_callbacks' }
  resources :relations
  resources :list_relations
  delete '/relations/destroy_member_data' => 'relations#destroy_member_data'

relations_controller.rb

  def destroy_member_data
    if current_user.relations.destroy_all && current_user.list_relations.destroy_all
      redirect_to(relations_path, :notice => 'All relations were successfully destroyed')
    else
      redirect_to(relations_path, :warning => 'Something went wrong. Please, try again.')
    end
  end

отношения / index.html.slim:

= link_to 'Destroy all data', relations_destroy_member_data_path, method: :delete, data: {confirm: 'Are you sure?'}

Когда я нажимаю на эту ссылку, у меня появляется эта ошибка:

Couldn't find Relation with 'id'=destroy_member_data

Extracted source (around line #59):

58: def destroy
59:    @relation = Relation.find(params[:id])

Кто-нибудь может мне помочь? Заранее спасибо.

1 Ответ

5 голосов
/ 13 июня 2019

Поскольку /relations/destroy_member_data соответствует маршруту удаления для /relations/:id, destroy_member_data рассматривается как идентификатор, и этот маршрут определен до

Два способа решить эту проблему

  • Переместить этот пользовательский маршрут до resources :relations
  • Это тоже должно работать и чище
resources :relations do
  delete :destroy_member_data, on: :collection
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...