Как переключить логическое значение в одну сторону с помощью button_to

У меня есть 2 кнопки, сидящие в методе if else, и предполагается, что первая кнопка позволяет пользователю изменить логическое значение с false на true. Затем, если модель показывает, что это правда, она покажет другую кнопку, которая является кнопкой удаления. Я не могу заставить кнопку переключения (верхнюю) работать правильно, удаление в порядке. Вот как обстоит дело сейчас.

  def which_button(reportapproval)
    if reportapproval.user_approved == false
      button_to "Approve this Manager?", { controller: "users/reportapprovals", id: @reportapproval.id, action: "#not sure what goes here" }, method: :#not sure what goes here, data: {confirm: "Are you sure you want to give this manager access to your report?" }
    else
      button_to "Remove this Manager", { controller: "users/reportapprovals", id: @reportapproval.id, action: "destroy" }, method: :delete, data: {confirm: "Are you sure you want to remove this manager's access to your report?" }
   end
  end

Но я продолжаю получать сообщение об ошибке «Маршрут сообщения не найден», что, как я знаю, неверно. Я хочу, чтобы это переключало логическое значение в модели утверждения отчета. Пожалуйста, покажи мне, что мне нужно сделать.


person SupremeA    schedule 06.02.2015    source источник
comment
вам нужно использовать первую кнопку для действия в контроллере, которое устанавливает reportapproval.user_approved в значение true.   -  person Deepesh    schedule 06.02.2015
comment
Итак, я должен создать уникальное действие в контроллере? Я сделал это, но не был уверен, как вызвать действие. Я вызываю это в области действия или метода этой кнопки, и в зависимости от того, что происходит в другой части этой кнопки.   -  person SupremeA    schedule 06.02.2015
comment
Вызовите его в действии, как вы сделали во втором. Он вызывает действие уничтожить.   -  person Deepesh    schedule 06.02.2015
comment
хорошо, я назову это в действии, но что происходит в методе, обновить?   -  person SupremeA    schedule 06.02.2015
comment
просто удалите метод или используйте get или post все, что требуется / все, что вы определяете в маршруте. И не забудьте проложить маршрут действия, которое вы создаете.   -  person Deepesh    schedule 06.02.2015
comment
Спасибо, я смог получить это с помощью нового метода и маршрута. Я ценю помощь.   -  person SupremeA    schedule 06.02.2015


Ответы (1)


Для этого вам нужно сделать новое действие в контроллере users/reportapprovals, которое установит reportapproval.user_approved в true, когда пользователь нажмет первую кнопку. В первой кнопке в атрибуте действия добавьте созданное новое действие. Также не забудьте упомянуть одно и то же действие в маршрутах. Чтобы не упоминать контроллер и действие, вы также можете указать путь нового созданного маршрута. Вот что вам нужно сделать. Это также можно сделать с помощью AJAX или просто путем перезагрузки страницы.

person Deepesh    schedule 06.02.2015