Не удается заставить Rails отображать JSON Response для действия - PullRequest
2 голосов
/ 24 мая 2011

У меня проблема с получением ответа Json, в контроллере есть действие

def on_card
    @cart = current_cart
    @on_card = @cart.products_count 

    respond_to do |format|
      format.json { render :json=> @on_card.to_json }
    end
end

в моем application.js я пытаюсь получить ответ от этого действия var var;

$.getJSON("carts/on_card", function(data){
    count = data;
}); 

при запуске firebug выдает ошибку:

404 не найдено

рельсы не могут найти тележку / действие на карте

маршруты для контроллера тележки:

resources :carts 

  match "carts/add/:id" => "carts#add", :as => "add"

  match "carts/add_menu/:id" => "carts#add_menu", :as => "add_menu"

match "carts/on_card" => "carts#on_card"

журнал

Запущен GET "/ carts / on_card" для 127.0.0.1 в 2011-05-24 20:31:58 + 0300

AbstractController :: ActionNotFound (Действие 'show' не может быть найдено для CartsController):

CartsController:
    class CartsController < ApplicationController
  def add
    if current_cart == nil
      @cart = Cart.new    
    else 
      @cart = current_cart
    end

    @cart.products << Product.find(params[:id])

    if @cart.save
      session[:cart_id] = @cart.id
      redirect_to root_path   
    else
      redirect_to root_path
    end
  end

  def add_menu
    if current_cart == nil
      @cart = Cart.new
    else 
      @cart = current_cart
    end

    @cart.menus << Menu.find(params[:id])

    if @cart.save
      session[:cart_id] = @cart.id
      redirect_to root_path   
    else
      redirect_to root_path
    end
  end  

  def index    
    if current_cart !=nil
      @cart = current_cart
    else
      @cart = Cart.new
    end
    respond_to do |format|
      format.html
    end
  end  

  def destroy
    @cart = current_cart
    @product = @cart.products.find(params[:id])
    @product.destroy

    respond_to do |format|
          format.js
    end
  end   

  def on_card
    @cart = current_cart
    @on_card = @cart.products_count 

    respond_to do |format|
      format.json { render :json=> @on_card.to_json }
    end
  end
    end

1 Ответ

2 голосов
/ 24 мая 2011

Переместить resources :carts ниже match "carts/on_card" => "carts#on_card"

В качестве альтернативы вы можете добавить действие в качестве маршрута сбора к вашему resources :carts

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...