2014-01-02 3 views
0

Я по-прежнему новичок в RoR и столкнулся с проблемой, которую я не могу решить. Я уже создал функции для добавления новых продуктов в базу данных и позволяет пользователю добавлять отдельные элементы в свою корзину, мой метод удаления просто дает мне ошибку, говоря, что он не может найти метод удаления в тележке carts_controller. Любая помощь будет оценена по достоинству.RoR Empty Cart/Delete line_Items

\ приложение \ вид \ Корзина \ show.html.erb

<%= button_to 'Empty Cart', @cart, method: :delete, 
    data: { confirm: 'are you sure?'} %> 

\ приложение \ контроллерах \ carts_controller.rb

def destroy 
@cart.destroy if @cart.id == session[:cart_id] 
session[:cart_id] = nil 
respond_to do |format| 
    format.html { redirect_to store_url, 
    notice: 'Your cart is empty' } 
    format.json { head :no_content } 
    end 
end 

private 
def set_cart 
    @cart = Cart.find(params[:id]) 
end 

Сообщение об ошибке Учитывая

Неизвестное действие
Действие «destroy» не найдено для CartsController

\ Config \ routes.rb

Depot::Application.routes.draw do 

root 'store#index', as: 'store' 
resources :line_items 
resources :carts 
get "store/index" 
resources :products 

end 
+0

Показать ваши маршруты - скорее всего, вы не ссылаетесь на действия там. (Classic Rails волшебным образом очистит каждое действие от контроллера. Эта схема сбрасывается из-за невероятного хаоса, который он вызвал.) – Phlip

+0

Обновлено, чтобы показать файл route.rb – user3154958

ответ

0

Зависит от того, что в настоящее время установлена ​​в вашей @cart переменной, вы можете потушить инспектировать для этого?

В противном случае, вы можете попробовать что-то вроде этого:

<%= link_to 'Empty Cart', cart_path(@cart), method: :delete, confirm: 'are you sure?' %> 
+0

Благодарим за помощь, но это все равно вызывает ту же ошибку " Действие «destroy» не найдено для CartsController ». Я обновил мой метод destroy, чтобы включить частный метод set_cart, если это то, что вы имели в виду под "зависит от того, что установлено в переменной экземпляра корзины, которая: @cart = Cart.find (params [: id]) – user3154958

+0

Просто убедитесь, что что метод destroy не находится под закрытым или защищенным? Маршрутизация кажется правильной. – derekyau

+0

Спасибо, что получилось, что у меня был другой частный метод (def invalid_cart) над методом уничтожения. После того, как он переместился в самую нижнюю часть контроллер работает нормально. – user3154958