2011-05-24 4 views
2

J'ai un problème d'obtenir une réponse JSON, j'ai une action dans mon contrôleurImpossible d'obtenir Rails pour montrer réponse JSON pour une action

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 

dans mes application.js j'essaie d'obtenir la réponse former cette action nombre de var;

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

quand je le lance Firebug me montre une erreur:

404 not found

rails can't find carts/on_card action

routes pour le contrôleur de chariots:

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" 

journal:

Started GET "/carts/on_card" for 127.0.0.1 at 2011-05-24 20:31:58 +0300

AbstractController::ActionNotFound (The action 'show' could not be found for 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 
+0

Par rapport à votre répertoire d'application, où est '' application.js' et chariots/on_card 'stocké? –

+0

que voulez-vous dire? application.js dans public/javascripts et on_card dans le contrôleur de chariots. Je pense toujours que le problème est en action, je dlete la route à carts/on_card et j'essaie d'y accéder et les rails me donnent toujours le même message: Action inconnue L'action 'show' est introuvable pour CartsController – Maki

+0

can vous accédez aux chariots/on_card directement à partir du navigateur? –

Répondre

2

Déplacer resources :carts au-dessous match "carts/on_card" => "carts#on_card"

Vous pourriez aussi ajouter l'action en tant que route de collecte à votre resources :carts

Questions connexes