Ошибка маршрутизации! "ActionController::RoutingError (Нет подходящих маршрутов [PATCH]"
Когда пользователь нажимает кнопку отправить с этой _form:
<%= simple_form_for(@routine, url: create_freebie_routine_path(params[:id])) do |f| %>
<%= f.date_select %>
<% end %>
Он получает эту ошибку: ActionController::RoutingError (No route matches [PATCH] "/routines/2/create_freebie")
Я не могу понять, как это исправить. Идея состоит в том, что пользователь отправит вышеуказанную форму с введенным freebie_date
а затем контроллер добавит +1 freebie
через create_freebie
действие в обновленном @routine
маршруты
resources :routines do
member do
get :new_freebie
post :create_freebie
end
end
routines_controller
def new_freebie
@routine = current_user.routines.find(params[:id])
@routine.freebie_date = Date.yesterday
respond_modal_with @routine
end
def create_freebie
@routine = current_user.routines.find(params[:id])
@routine.freebie = @routine.freebie + 1
@routine.save
respond_modal_with @routine, location: root_path
flash[:alert] = 'Freebie added'
end
Спасибо за вашу помощь!
1 ответ
Решение
Вам придется заменить это
resources :routines do
member do
get :new_freebie
post :create_freebie
end
end
с:
resources :routines do
member do
get :new_freebie
patch :create_freebie
end
end
Обратите внимание на изменение от post
в patch
Другое решение состоит в том, чтобы указать method
в post
в форме без изменения вашего routes
:
<%= simple_form_for @routine, url: create_freebie_routine_path(params[:id]), method: :post do |f| %>
<%= f.date_select %>
<% end %>