Ни один маршрут не соответствует [POST] /coachings/4 при попытке использовать Destroy

        coachings GET    /coachings(.:format)                        {:action=>"index", :controller=>"coachings"}
                  POST   /coachings(.:format)                        {:action=>"create", :controller=>"coachings"}
     new_coaching GET    /coachings/new(.:format)                    {:action=>"new", :controller=>"coachings"}
    edit_coaching GET    /coachings/:id/edit(.:format)               {:action=>"edit", :controller=>"coachings"}
         coaching GET    /coachings/:id(.:format)                    {:action=>"show", :controller=>"coachings"}
                  PUT    /coachings/:id(.:format)                    {:action=>"update", :controller=>"coachings"}
                  DELETE /coachings/:id(.:format)                    {:action=>"destroy", :controller=>"coachings"}

мои маршруты верны, вот мой индекс просмотра

‹%= link_to 'Уничтожить', инструктаж, :confirm 'Вы уверены?', :method => :destroy %>

вот мой контроллер

def destroy
    @coaching = Coaching.find(params[:id])
    @coaching.destroy

    respond_to do |format|
      format.html { redirect_to coachings_path }
      format.json { head :ok }
    end
end

есть идеи, почему я получаю эту ошибку? Я новичок в RoR, это мои первые проекты, которые я сделал сам.


person user1165931    schedule 23.01.2012    source источник


Ответы (2)


Используйте метод :delete

<%= link_to 'Destroy', coaching, :confirm => 'Are you sure?', :method => :delete %>
person Sergio Tulentsev    schedule 23.01.2012
comment
Удалить: действие ПОЛУЧИТЬ, где вы получаете сообщение Вы уверены? Диалог. - person Reactormonk; 24.01.2012

В вашем link_to вы используете метод destroy, который не является допустимым HTTP-глаголом, поэтому Rails, вероятно, по умолчанию использует POST. Вместо этого вам нужно будет использовать DELETE:

<%= link_to 'Destroy', coaching, confirm: 'Are you sure?', method: :delete %>
person Kyle Decot    schedule 24.01.2012