Метод контроллера rails не вызывается

У меня есть эта кнопка на страница:

<%= 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 никогда не выводится на мою консоль.

Что я здесь делаю не так? Пожалуйста помоги!

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

Mayur Shah 31.10.2018 12:59

@mayur shah - Я попробовал это первым. Это тоже не сработало

Biju 31.10.2018 13:05

Сделайте это одно, запустите rake routes и попробуйте найти этот маршрут по результату команды.

Mayur Shah 31.10.2018 13:07

@MayurShah _ Я пробегал рейк-маршруты. Вот что у меня получилось:

Biju 31.10.2018 13:45

Вы НЕ должны использовать здесь маршрут GET. GET должен быть идемпотентным - он не должен создавать или изменять какие-либо ресурсы. Запросы GET хранятся в истории браузера! Используйте POST, PATCH или PUT. restcookbook.com/HTTP%20Methods/idempotency

max 31.10.2018 14:48

@max - я использовал POST, как вы предложили. Но я не вижу, чтобы в консоли запускался какой-либо запрос на обновление. 1. Что мне не хватает для выполнения запроса UPDATE? 2. Также на консоли вижу - Processing by DailyBalanceReconciliationsController#show as HTML Parameters: {"method"=>"post", "id"=>"approve"} . Почему появляется id => Approve. это верно?

Biju 01.11.2018 05:49

Нет, это не выглядит правильным. У вас есть другой маршрут в routes.rb, который имеет приоритет. Маршруты имеют приоритет в порядке их определения.

max 01.11.2018 13:04
2
7
306
0

Другие вопросы по теме