Rails - Как мне изменить мои пользовательские методы в контроллере на обычные методы? - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть Subscribers Controller с пользовательскими методами, такими как add_subscribers, add_subscriber и remove_subscriber.

Как мне изменить эти методы на использование обычных методов create и destroy для выполнения тех же операций, что и в моих пользовательских методах?

app/controllers/subscribers_controller.rb


  def add_subscribers
    @group = Group.find(params[:id])
    authorize @group, :create?

    @course = @group.course    
    @student_subscribers = @course.subscribers
      .where("group_id !=? or group_id is null", @group.id)
  end

  def add_subscriber
    group = Group.find(params[:id])
    authorize group, :create?

    subscriber = Subscriber.find(params[:subscriber_id])
    subscriber.group = group

    if subscriber.save
      flash[:alert] = "Successfully added!"
      redirect_to add_subscribers_group_path(group)
    else
      flash[:error] = "Failed to add user!"
      redirect_to add_subscribers_group_path(group)
    end
  end

  def remove_subscriber
    group = Group.find(params[:id])
    authorize group, :create?

    subscriber = Subscriber.find(params[:subscriber_id])
    subscriber.group = nil

    if subscriber.save
      flash[:alert] = "Successfully removed!"
      redirect_to group
    else
      flash[:error] = "Failed to remove from group!"
      redirect_to group
    end
  end  
end```


I want to use the conventional methods to perform these operations instead of the custom methods. How can I do that?

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Из вашего кода можно сделать вывод, что подписчики являются вложенным ресурсом в группах:

resources :groups do
  resources :subscribers
end

Это приведет к созданию маршрутов, подобных /groups/:group_id/subscribers/:id

remove_subscriber, отображаемых точно на destroyaction (delete http verb), но вам придется изменить параметры id - будет params[:group_id] и params[:id] is от подписчика

add_subscribers, вероятно, визуализирует форму, поэтомуnew действие

add_subscriber равно create

0 голосов
/ 17 апреля 2019

В вашем файле конфигурации / маршрутов:

resources :subscribers

Это создаст стандартные маршруты для этого ресурса и направит их через контроллер подписчиков. Теперь вам нужно переименовать ваши методы в create, update и т. Д. В вашем контроллере.

Наконец, если вы нажимаете эти конечные точки через форму, вам нужно отредактировать ее так, чтобы она указала на правильные маршруты.

После того, как вы добавили вышеуказанную строку в ваш route.rb, запустите rake routes из терминала, чтобы получить приличный список всех ваших маршрутов

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