У меня есть эта кнопка на страница:
<%= link_to 'Approve', {:action => "approve", :controller => "daily_balance_reconciliations", :method => :get}, class: 'btn btn-primary' %>
Я определил это в routes.rb:
get "/daily_balance_reconciliations/approve" => "daily_balance_reconciliations#approve", :as => :approve_daily_balance_reconciliations
У меня этот метод определен в daily_balance_reconciliations_controller.rb:
def approve
puts "*************************approve*********************************"
@daily_balance_reconciliation = DailyBalanceReconciliation.all
DailyBalanceReconciliation.all.update_all(approved: true)
redirect_to daily_balance_reconciliations_url, notice: "All the Daily Balance Records are approved"
end
Вышеупомянутый метод в моем контроллере никогда не вызывается; сообщение внутри оператора put никогда не выводится на мою консоль.
Что я здесь делаю не так? Пожалуйста помоги!
@mayur shah - Я попробовал это первым. Это тоже не сработало
Сделайте это одно, запустите rake routes и попробуйте найти этот маршрут по результату команды.
@MayurShah _ Я пробегал рейк-маршруты. Вот что у меня получилось:
Вы НЕ должны использовать здесь маршрут GET. GET должен быть идемпотентным - он не должен создавать или изменять какие-либо ресурсы. Запросы GET хранятся в истории браузера! Используйте POST, PATCH или PUT. restcookbook.com/HTTP%20Methods/idempotency
@max - я использовал POST, как вы предложили. Но я не вижу, чтобы в консоли запускался какой-либо запрос на обновление. 1. Что мне не хватает для выполнения запроса UPDATE? 2. Также на консоли вижу - Processing by DailyBalanceReconciliationsController#show as HTML Parameters: {"method"=>"post", "id"=>"approve"} . Почему появляется id => Approve. это верно?
Нет, это не выглядит правильным. У вас есть другой маршрут в routes.rb, который имеет приоритет. Маршруты имеют приоритет в порядке их определения.





Попробуйте использовать
<%= link_to 'Approve', approve_daily_balance_reconciliations_path, class: 'btn btn-primary' %>